java实现查找第一个只出现一次的字符
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
问题:
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
相关视频教程推荐:java在线教程
解决思路:
题目要求很明确,就是遍历字符串,并且给字符计数,计数之后,找到计数为1的字符即可。很明显这需要用到hashmap,key就是字符串中的各个字符,而value就是这个字符在字符串中出现的次数。
代码如下:
import java.util.LinkedHashMap;
public class Solution {
public int FirstNotRepeatingChar(String str) {
int len = str.length();
LinkedHashMap map = new LinkedHashMap<>();
for (int i = 0; i < len; i++) {
char c = str.charAt(i);
Integer val = map.get(c);
map.merge(c, 1, (oldValue, newValue) -> oldValue + newValue);
}
Character resultKey = null;
for (Character c : map.keySet()){
if (map.get(c) == 1){
resultKey = c;
break;
}
}
for (int i = 0 ;i < len; i++){
if (str.charAt(i) == resultKey){
return i;
}
}
return -1;
}
}
相关文章教程推荐:java快速入门
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341