MyException - 我的异常网
当前位置:我的异常网» J2EE » 一道NSA上看到的题,大家一起讨论下!该如何处理

一道NSA上看到的题,大家一起讨论下!该如何处理(2)

www.MyException.Cn  网友分享于:2013-01-12  浏览:20次

------解决方案--------------------
题目就是求一个字符串中单词的个数/所有单词的长度之和。单词的定义是只能由字母组成,可以是大写亦可以是小写,但是不能包含数字,单词的末尾可以包含".",这个"."不是字母。
------解决方案--------------------
探讨
这个题不难吧,topcoder里一道250分的题。用正则就行啊

Java code
public class HowEasy {

/**
* @param args the command line arguments
*/
public static int pointVal(String problemStatement) {
// TODO code application logic here
String[] token;
token = problemStatement.split(" ");
int level = 250;
int num = 0;
int lengt…

------解决方案--------------------
25楼的答案要改一改就ok了
Java code

public static int pointVal(String problemStatement) {
        // TODO code application logic here
        String[] token;
        token = problemStatement.split(" ");
        int level = 250;
        int num = 0;
        int length = 0;
        int avlength = 0;
        for (String word : token) {
            if(word.charAt(word.length-1)=='.') {
                word = word.substring(0,word.length-1); 
            if (isWord(word)) {
                num++;
                length += word.length();
            }
        }
        if(num == 0) {
            avlength=0;
        } else {
            avlength = length / num;
        }
        ..........................

------解决方案--------------------
探讨
题目就是求一个字符串中单词的个数/所有单词的长度之和。单词的定义是只能由字母组成,可以是大写亦可以是小写,但是不能包含数字,单词的末尾可以包含".",这个"."不是字母。

------解决方案--------------------
C/C++ code

//h 文件
#include <iostream>
#include <vector>
using namespace std;
class HowEasy
{
public:
    HowEasy()
    {
    }
    static int pointVal(string problemString);
private:
    /*
        函数说明: split 根据分隔符拆分字符串;
        函数参数: problemString 为要拆分的字符串,splitChar 为分隔符;
        函数返回值: 返回拆分厚的字符串到vector 中
    */
    static vector<string> split(string problemString , char splitChar);
    /*
        函数说明: isLetter 测试字符是否为字母; 
        函数返回值: true 代表字符是字母,否则不是
    */
    static bool isLetter(char testChar);
    /*
    函数说明:isWord 测试一个字符串是否为单词;
    函数返回值:true代表是一个单词
    */
    static bool isWord(string testString);
};
//cpp 文件
#include "HowEasy.h"

vector<string> HowEasy::split(std::string problemString, char splitChar)
{
    vector<string> vecResult;
    bool isSingle = true; //字符串中是否包含分隔符
    size_t beginIndex = 0;
    int count =0;
    for(size_t i =0 ;i < problemString.size(); i++)
    {
        count++;
        //判断字符是否为要分隔的字符
        if(problemString.at(i) == splitChar)
        {
            isSingle =false;
            //如果count 为1 则证明只有一个分隔符不用加入vector 中了
            if(count != 1)
            {
                string subString = problemString.substr(beginIndex,count-1);
                vecResult.push_back(subString);
            }
            beginIndex = i+1;
            count= 0;
        }
    }
    //如果是字符串中不包含空格,则将整个字符串压入Vector中,否则将最后字符串压入Vector中
    if(isSingle)
        vecResult.push_back(problemString);
    else
        vecResult.push_back(problemString.substr(beginIndex,count));
    return vecResult;
}

bool HowEasy::isLetter(char tempChar)
{
    if( (tempChar >= 'A' && tempChar <= 'Z') || (tempChar >= 'a' && tempChar <= 'z'))
        return true;
    return false;
}
bool HowEasy::isWord(std::string testString)
{
    size_t length = testString.size();
    //处理空的字符串
    if(length == 0)
        return false;
    //处理0至size-2下标的字符。因为最后一位可能为"."; 
    for(size_t i =0 ;i < length-1;i++)
    {
        if( !isLetter(testString.at(i)))
            return false;
    }
    //处理字符串最后一位;
    if(isLetter(testString.at(length-1)) || testString.at(length -1) == '.')
        return true;
    else
        return false;
    return true;
}
int HowEasy::pointVal(std::string problemString)
{
    vector<string> tempVec = split(problemString ,' ');
    //打印测试
    for(int j =0 ;j < tempVec.size();j++)
    {
        cout << tempVec[j].c_str() << endl;
    }

    int wordCount = 0; //单词个数
    size_t length =0; //单词总长度
    for(size_t i = 0; i< tempVec.size() ;i++)
    {
        if(isWord(tempVec[i]))
        {
            wordCount++;
            //测试最后一位是否为".", 为"." 则将其长度减1,否则不减
            if(tempVec[i].at(tempVec[i].size() -1) != '.')
                length += tempVec[i].size();
            else
                length += tempVec[i].size()-1;
        }
    }
    //处理Length =0,因为如果Length =0 ,则wordCount =0不能做除法;
    if(length == 0)
        return 250;
    cout << "wordCount : " << wordCount << endl;
    cout << "length : " << length << endl;
    size_t score = length / wordCount;
    if(score <= 3)
        return 250;
    else if(score <=5 && score >= 4)
    {
        return 500;
    }
    else
        return 1000;
}//测试CPP文件
#include "HowEasy.h"
int main(int argc,char* argv[])
{
    string testString =" Implement a class H5 which contains some method." ; 
    int result  = HowEasy::pointVal(testString);
    cout << "result is " << result << endl;
    return 0;
}

文章评论

我是如何打败拖延症的
我是如何打败拖延症的
旅行,写作,编程
旅行,写作,编程
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
如何成为一名黑客
如何成为一名黑客
程序员应该关注的一些事儿
程序员应该关注的一些事儿
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员的鄙视链
程序员的鄙视链
老程序员的下场
老程序员的下场
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
总结2014中国互联网十大段子
总结2014中国互联网十大段子
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
一个程序员的时间管理
一个程序员的时间管理
程序员都该阅读的书
程序员都该阅读的书
代码女神横空出世
代码女神横空出世
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员必看的十大电影
程序员必看的十大电影
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
中美印日四国程序员比较
中美印日四国程序员比较
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
漫画:程序员的工作
漫画:程序员的工作
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
10个调试和排错的小建议
10个调试和排错的小建议
Java程序员必看电影
Java程序员必看电影
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
每天工作4小时的程序员
每天工作4小时的程序员
我的丈夫是个程序员
我的丈夫是个程序员
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
为什么程序员都是夜猫子
为什么程序员都是夜猫子
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
 程序员的样子
程序员的样子
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
鲜为人知的编程真相
鲜为人知的编程真相
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有