提示:牛客OJACM模式练习记录,记录犯错的地方
前言
HJ1、字符串最后一个单词的长度
犯错点:题目要求的是输入一行,所以使用getline来获取一行字符串,而不是cin获取单个字符串;因为此cin使用==空白(空格、制表符、换行符)==来确定字符串的结束位置,所以在当前题意下只能得到一个单词
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
getline(cin, str); // 将一行的数据 赋值给str 字符串
int n = str.size();
int i = n - 1;
for(; i >= 0 && str[i] != ' '; i--);
cout << n - i - 1 << endl;
/* 其他思路 */
string s;
while(cin >> s);
cout << s.size();
return 0;
}
HJ17、坐标移动
题目
写了个很繁琐的代码,但能AC;下次看下题解将代码精简
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
bool isvalid(string tmp){
if(tmp.size() > 3)
return false;
if(tmp.size() <= 1)
return false;
if(tmp.size() == 2){
if((tmp[0] == 'A' || tmp[0] == 'D' ||
tmp[0] == 'W' || tmp[0] == 'S'))
if(isdigit(tmp[1]))
return true;
}
if(tmp.size() == 3){
if((tmp[0] == 'A' || tmp[0] == 'D' ||
tmp[0] == 'W' || tmp[0] == 'S'))
if(isdigit(tmp[1]) && isdigit(tmp[2]))
return true;
}
return fals