力扣(LeetCode)试题58-最后一个单词的长度 C++代码
思路:需要两个变量存储单词,vac为先锋,用于不断索取新单词;pre_vac为后备军,用于存储上一个单词,避免vac先锋索不到单词
具体看代码,已注释
1 #include <iostream>
2
3 using namespace std;
4
5 class Solution {
6 public:
7 int lengthOfLastWord(string s)
8 {
9 string pre_vac = "";//存储上一个单词,初始值为空串
10 string vac = "";//存储当前单词,初始值为空串
11 if (s.length() == 0) return 0;//若字符串为空,则返回0
12 else
13 {
14 for (int i = 0; i<s.length(); i++)//遍历字符串
15 {
16 if (s[i] != ' ')//若某元素不是“空格”,将其存入 当前单词vac
17 vac += s[i];
18 else//若某元素是“空格”,将当前单词清空,准备存入下一个非空格元素
19 {
20 if (vac.length() != 0)//清空之前,若当前单词不为空,将当前单词值给上一个单词pre_vac
21 {
22 pre_vac = vac;
23 }
24 vac = "";//清空
25 continue;
26 }
27 }
28 if (vac.length() == 0)//循环结束时,如果当前单词为空,则将最后存入的单词pre_vac赋值给vac,并返回
29 vac = pre_vac;
30 }
31 return vac.length();
32 }
33 };
34
35 int main()
36 {
37 Solution sol;
38 int n;
39 string s = "b a ";
40 n = sol.lengthOfLastWord(s);
41 cout << n << endl;
42
43 int q;
44 cin >> q;
45 return 0;
46 }