给你一个下标从 0 开始的字符串 s
,该字符串由用户输入。按键变更的定义是:使用与上次使用的按键不同的键。例如 s = "ab"
表示按键变更一次,而 s = "bBBb"
不存在按键变更。
返回用户输入过程中按键变更的次数。
注意:shift
或 caps lock
等修饰键不计入按键变更,也就是说,如果用户先输入字母 'a'
然后输入字母 'A'
,不算作按键变更。
思路
当前字符与前一个字符对比,如果不相等(字符A与字符a视为相等),计数加一。
代码
class Solution {
final int BIGA=65;
final int SMALLA=97;
public int countKeyChanges(String s) {
int ans=0;
char[] chars=s.toCharArray();
int n=s.length();
String tmp = s.toUpperCase();
int last = chars[0] >= SMALLA ? chars[0] - SMALLA : chars[0] - BIGA;
for (int i=1; i<n; i++) {
if (tmp.charAt(i) != tmp.charAt(i-1))
ans++;
}
return ans;
}
}