题解 | #字符串最后一个单词的长度#
字符串最后一个单词的长度
https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da
题目中要求我们求出字符串最后一个单词的长度,因为英语中每个单词以空格做分割,所以我们只需要找到每个空格的位置就能划分每个单词了,而字符串的最后一个空格划分了倒数第一个和倒数第二个单词。因此我们只需要找到倒数第一个空格的位置,这个位置后面就是最后一个单词。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string words;
//cin读取到token(空格或者是换行)结束 而 getline读取完一行 这里要选择getline
//cin >> words; 这里只能应对字符串中只有一个单词的情况
getline(cin, words);
size_t pos = words.rfind(" ");
//有可能字符串就只有一个单词 字符串最后一个单词的长度就是字符串的长度
//此时 是找不到空格的 这样的话 pos == npos
//所以 就不做出以下判断
//if (pos != string::npos)
//{
// cout << (words.size() - (pos + 1)) << endl;
//}
//string类size()的值是字符串的长度 相当于字符串最后一个字母的后面一个位置
//类似于\0的位置 但string不以\0结尾
//而pos是最后一个单词前空格的位置 因此pos + 1就是最后一个单词第一个字母的位置
//最后一个单词的长度就为 size - (pos - 1)
cout << (words.size() - (pos + 1)) << endl;
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String words = scanner.nextLine();
int pos = words.lastIndexOf(" ");
System.out.println(words.length() - (pos + 1));
}
}