首页 > 编程语言 > 详细

剑指Offer(Java版)第三十九题:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符, 并返回它的位置, 如果没有则返回 -1(需要区分大小写).

时间:2020-03-18 17:34:06      阅读:68      评论:0      收藏:0      [点我收藏+]

/*
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,
并返回它的位置, 如果没有则返回 -1(需要区分大小写).
*/
//用Map来实现

import java.util.*;

public class Class39 {

public int FirstNotRepeatingChar(String str){
if(str == null || str.length() < 0 || str.length() > 10000){
return -1;
}
int value = 0;
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
for(int i = 0; i < str.length(); i++){
if(map.containsKey(str.charAt(i))){
value = map.get(str.charAt(i));
map.put(str.charAt(i), ++value);
}else{
map.put(str.charAt(i), 1);
}
}
for(int i = 0; i < str.length(); i++){
if(map.get(str.charAt(i)) == 1){
return i;
}
}
return -1;
}

public void test(){
String a = "acbccccccca";
System.out.print(FirstNotRepeatingChar(a));
}


public static void main(String[] args) {
// TODO Auto-generated method stub
Class39 c = new Class39();
c.test();

}

}

剑指Offer(Java版)第三十九题:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符, 并返回它的位置, 如果没有则返回 -1(需要区分大小写).

原文:https://www.cnblogs.com/zhuozige/p/12518296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!