用java给你一个只包含小写字母的字符串。 请你判断是否存在只在字符串中出现过一次的字符。 如果存在,则输出满足条件的字符中位置最靠前的那个。 如果没有,输出 no。 输入格式 共一行,包含一个由小写字母构成的字符串 数据保证字符串的长度不超过100000
时间: 2024-05-19 12:11:05 浏览: 20
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
int[] count=new int[26];
for(int i=0;i<s.length();i++){
count[s.charAt(i)-'a']++;
}
for(int i=0;i<s.length();i++){
if(count[s.charAt(i)-'a']==1){
System.out.println(s.charAt(i));
return;
}
}
System.out.println("no");
}
}
相关问题
用java给你一个只包含小写字母的字符串。 请你判断是否存在只在字符串中出现过一次的字符。 如果存在,则输出满足条件的字符中位置最靠前的那个。 如果没有,输出 no。 输入格式 共一行,包含一个由小写字母构成的字符串
可以使用哈希表来记录每个字符出现的次数,然后再遍历一遍字符串,找到第一个只出现一次的字符即可。以下是Java代码实现:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
map.put(c, map.getOrDefault(c, 0) + 1);
}
int pos = -1;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (map.get(c) == 1) {
pos = i;
break;
}
}
if (pos != -1) {
System.out.println(str.charAt(pos));
} else {
System.out.println("no");
}
}
}
```
1. 字符串操作 给定一个只包含小写字母字符串,每次可以选择两个相同的字符删除,并在字符串结尾新增任意一个小写字母。 请问最少多少次操作后,所有的字母都不相同?java代码
我可以回答这个问题。这是一个字符串操作问题,可以使用贪心算法来解决。首先统计每个字母出现的次数,然后按照出现次数从大到小排序。接着从出现次数最多的字母开始,每次选择两个相同的字母删除,并在字符串结尾新增一个与该字母不同的小写字母。重复这个过程直到所有字母都不相同。最少的操作次数就是删除的次数,也就是所有字母出现次数的总和减去不同字母的个数。以下是Java代码实现:
public static int minOperations(String s) {
int[] count = new int[26];
for (char c : s.toCharArray()) {
count[c - 'a']++;
}
Arrays.sort(count);
int distinct = 0;
for (int i = 25; i >= 0; i--) {
if (count[i] == 0) {
break;
}
if (i == 25 || count[i] != count[i + 1]) {
distinct++;
}
}
return s.length() - distinct;
}
阅读全文