[编程题0][剑指offer]字符串最后一个单词的长度
原题地址:https://www.nowcoder.com/questionTerminal/8c949ea5f36f422594b306a2300315da
题意:计算字符串最后一个单词的长度,单词以空格隔开
输入描述:一行字符串,非空,长度小于5000
输出描述:整数N,表示最后一个单词的长度
示例:
输入:hello world
输出:5
整体思路:
将输入的字符串按空格分隔,找到最后一个求其大小。
实现1: @C++
1 #include <iostream> 2 #include <sstream> 3 #include <cstring> 4 using namespace std; 5 int main() 6 { 7 string inStr; 8 int nLen = 0; 9 getline(cin,inStr); 10 if(" "==inStr) 11 nLen = 0; 12 else{ 13 istringstream is(inStr); 14 string last; 15 while(is >> last) 16 ; 17 nLen = last.size(); 18 } 19 cout<<nLen<<endl; 20 return 0; 21 }
小结:
- 采用getline()函数处理输入[参考http://blog.csdn.net/yelbosh/article/details/7483521,加以总结]
- 功能:从流中读取文本,可以读取整行读取但不局限于此。读取方式有很多,如根据限定符、或已读取的字数等
- C++中有两个getline()函数,
- 定义在string头文件中,为全局函数,函数声明是istream& getline ( istream& is, string& str, char delim )和istream& getline ( istream& is, string& str )
- 定义为istring的成员函数,函数声明是istream& getline (char* s, streamsize n )与istream& getline (char*
s, streamsize n, char delim );
- 考虑特殊情况,即输入字符为空时,结果为0
- 输入字符串流操作[参考http://www.cnblogs.com/gamesky/archive/2013/01/09/2852356.html]
- 功能:从流中提取数据,支持 >> 操作;可使用分解点获取不同的数据,完成字符串到其他类型的转换
- 初始化:
- istringstream istr("1 56.7");
- istr.str("1 56.7");//把字符串"1 56.7"存入字符串流中
- 常用函数str(),完成字符串流->字符串。e.g.
-
istringstream istr("1 56.7"); string str = istr.str(); //函数str()返回一个字符串
- 转换到其他数据类型,包括string, int, double, float等。
-
//同样的初始化 istringstram istr("1, 56.7"); int n; doulbe d; //以空格为界,把istringstream中数据取出,应进行类型转换 istr>>n; //第一个字符转换为整型数据1 istr>>d; //第二个字符转换为浮点数56.7 //假设换下存储类型 istr>>d; //istringstream第一个数要自动变成浮点型,输出仍为1 istr>>n; //istringstream第二个数要自动变成整型,有数字的阶段,输出为56
实现2: @Python
def lastSymLen(): while True: try: line = raw_input() if len(line)==0 : print 0 break if len(line)>5000 : line = line[:5000] wordList = line.split() print len(wordList[-1]) except: break if __name__ == "__main__": lastSymLen()
小结:
- raw_input()函数,用于接受字符串,可直接读取来自控制台的任何类型输入,详见http://www.cnblogs.com/way_testlife/archive/2011/03/29/1999283.html
- split()函数,通过指定分隔符对字符串进行切片,返回list类型
- 切片:详见廖雪峰的笔记
在网上看到的更简洁的版本
1 import sys 2 for line in sys.stdin: 3 a = line.split() 4 print len(a[-1])