-
题目大意:找出键盘中坏掉的字符。
-
思路1(我的思路):
-
检测s1[i]和s2[j],若不同,就
i++
,检测s1[i]是否在要输出的数组s3[size]里,若不存在,就判断s1[i]是为小写字母,若为小写字母,变成大写字母,然后插入s3[size],size++
;若相同,就i++
,j++
。 -
输出s3[size]时,注意要将字符数字变成int类型。
-
代码:
#include <iostream> #include <string> using namespace std; int N = 256; char capitalize(char c){ if(c >= 97 && c <= 122) // 小写字母的ASCII从97开始 return c - 32; // 将大写字母转换成小写字母(大写字母的ASCII从65开始) else return c; } bool isString(char *s, int size, char c){ if(size == 0){ return false; } else{ for(int i = 0; i < size; i++){ c = capitalize(c); // 确保小写字母变成大写字母 if(c == *(s + i)) return true; } return false; } } bool isNum(char c){ if(c >= 48 && c <= 51) // 数字的ASCII从48开始 return true; return false; } int main() { // input string s1, s2; cin >> s1 >> s2; // s1下标,s2下标,s3大小 int i = 0, j = 0, size = 0; // 存缺少的字母 char s3[N]; // 遍历s1 s2 while(i != s1.length()){ if(s1[i] != s2[j]){ // 发现缺少的字母时 // 将缺少的字母存入s3 if(!isString(s3, size, s1[i])){ // 判断字符在不在s3中 char c = capitalize(s1[i]); //判断字母是否为大写,并将小写字母转成大写 s3[size++] = c; // 将字符存入s3 } i++; // s1的下标+1 } else{ // 若键盘正常,两个字符串的下标都+1 i++; j++; } } // 输出s3 for(int i = 0; i < size; i++){ // 若为数字,就将字符转化成数字再输出 if(isNum(s3[i])) printf("%d", s3[i] - 48); else printf("%c", s3[i]); } return 0; }
-
-
思路2(柳诺的思路):
-
用
string.find()
查找s2中是否存在s1[i] -
代码:
#include <iostream> #include <cctype> #include <string> using namespace std; int main() { string s1, s2, s3; cin >> s1 >> s2; for(int i = 0; i < s1.length(); i++) if(s2.find(s1[i]) == string::npos && s3.find(toupper(s1[i])) == string::npos) s3 += toupper(s1[i]); cout << s3; return 0; }
-
-
总结
-
C语言定义数组的方法:
- int a[] = {1, 2, 3}; // 不定长数组,长度由元素个数决定。
- int a[N]; // 定长数组 。
- int *a; // 定义指针
-
C语言往函数传数组的方法:
- int fuc(int *a, int size){int n = *(a + 0)}; // 传入指针和大小两个变量
- int fuc(int a[], int size){}; // 传入数组和大小两个变量
- int fuc(int a[10]){}; // 只传入数组一个变量
-
查找字符串a是否包含子串b,不是用strA.find(strB) > 0 而是
strA.find(strB) != string:npos
; -
C++中
tolower()
函数是把字符串都转化为小写字母,touppre()
函数是把字符串都转化为大写字母。注意:要
#include <cctype>
; -
注意:检查s3中是否存在字符时要将该字符转换成大写字符;
-
写代码的习惯不好,经常会犯很傻很低级的错误;
-
思路还是断开了。
-
【PAT】1084 Broken Keyboard (20 分)
最新推荐文章于 2022-02-13 22:12:55 发布