1、检测大写字母
//给定一个单词,你需要判断单词的大写使用是否正确。 // // 我们定义,在以下情况时,单词的大写用法是正确的: // // // 全部字母都是大写,比如"USA"。 // 单词中所有字母都不是大写,比如"leetcode"。 // 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。 // // // 否则,我们定义这个单词没有正确使用大写字母。 // // 示例 1: // // //输入: "USA" //输出: True // // // 示例 2: // // //输入: "FlaG" //输出: False // // // 注意: 输入是由大写和小写拉丁字母组成的非空单词。 // Related Topics 字符串
数一下大写字母的个数即可
public boolean detectCapitalUse(String word) {
int count = 0;
int length = word.length();
for (int i = 0; i < word.length(); i++) {
if(isLetter(word.charAt(i))){
count++;
}
}
if(count == length && length != 1){
return true;
}else if(count == 1 && isLetter(word.charAt(0))){
return true;
}else if(count == 0){
return true;
}
return false;
}
private boolean isLetter(char x){
if(x >= 'A' && x <= 'Z'){
return true;
}
return false;
}
2、反转字符串II
//给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。 // // // 如果剩余字符少于 k 个,则将剩余字符全部反转。 // 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。 // // // // // 示例: // // 输入: s = "abcdefg", k = 2 //输出: "bacdfeg" // // // // // 提示: // // // 该字符串只包含小写英文字母。 // 给定字符串的长度和 k 在 [1, 10000] 范围内。 // // Related Topics 字符串
直接转成字符数组再反转
public String reverseStr(String s, int k) {
char[] a = s.toCharArray();
for (int start = 0; start < a.length; start += 2 * k) {
int i = start, j = Math.min(start + k - 1, a.length - 1);
while (i < j) {
char tmp = a[i];
a[i++] = a[j];
a[j--] = tmp;
}
}
return new String(a);
}