题解 | #计算某字符出现次数#
计算某字符出现次数
http://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1
本题主要考察字符串的操作。首先先把所有的字符转换成大写字符,便于比较。其次,使用双指针,一个指针指向字符串的开头,另一个指针指向字符串的最后一位,同时与字符c进行比较。移动双指针,直到遍历完全部的字符串为止。
#include <string>
using namespace std;
int HJ2(string s, char c) {
// 先将小写转大写
int n = s.size();
for (int k = 0; k < n; k++) {
if (s[k] >= 'a' && s[k] <= 'z') {
s[k] = s[k] - 32;
}
}
if (c >= 'a' && c <= 'z') c = c-32;
int i = 0, j = n-1;
int num = 0;
while ( i < j) {
if (s[i++] == c) num++;
if (s[j--] == c) num++;
}
if (i == j) {
if (s[i] == c) num++;
}
return num;
}
int main() {
string s;
getline(cin, s, '\n');
char c;
cin >> c;
int ans = HJ2(s, c);
cout << ans << endl;
return 0;
}