方法如下(仅供参考):
public static int firstUniqChar(String s) {
int[] array = new int[26]; //创建一个存放字符的数组
//统计每个字符出现的次数
for (int i = 0; i < s.length(); i++) {
array[s.charAt(i) - 'a']++; //出现的字符对应数组元素++
}
//找第一个只出现一次的字符
for (int i = 0; i < s.length(); i++) { //遍历字符串
if (array[s.charAt(i) - 'a'] == 1) { //找到第一个对应数组元素是1的字符并返回其索引
return i;
}
}
return -1;
}
public static void main(String[] args) {
// 循环输入
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
// 获取一行单词
String s = sc.nextLine();
// 1. 找到最后一个空格
// 2. 获取最后一个单词:从最后一个空格+1位置开始,一直截取到末尾
// 3. 打印最后一个单词长度
int len = s.substring(s.lastIndexOf(' ') + 1, s.length()).length();
System.out.println(len);
}
sc.close();
}
//判断是否是数字或字母
public static boolean isValidChar(char ch) {
if ((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')) {
return true;
}
return false;
}
//判断回文串
public static boolean isPalindrome(String s) {
//全部改为小写
s.toLowerCase();
int left = 0;
int right = s.length() - 1;
while (left < right) {
//在左侧找到有效字符
while (left < right && !isValidChar(s.charAt(left))) {
left++;
}
//在右侧找到有效字符
while (left < right && !isValidChar(s.charAt(right))) {
right--;
}
if (s.charAt(left) != s.charAt(right)) {
return false;
} else {
left++;
right--;
}
}
return true;
}