高手帮忙

wjjwt 2010-04-24 09:44:24
给定一个字符串,要求写一个函数来求出这个字符串里面第一个重复的字符,例如字符串"abcda",第一个重复的字符是a。abcdba,第一个重复的字符是b,希望能用java给个完整答案,谢谢
...全文
70 10 打赏 收藏 转发到动态 举报
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
铑枪--突廆孒 2010-04-25
  • 打赏
  • 举报
回复
LZ的意思就是其它人的答案全是错的???
wjjwt 2010-04-24
  • 打赏
  • 举报
回复
public static void main(String[] args){
Scanner input = new Scanner(System.in) ;
System.out.print("请输入第一个字符:");
String a1 = input.nextLine() ;

char [] chars = a1.toCharArray() ;

char charTemp = ' ' ;
for(int i=0 ; i<chars.length ; i++){
//System.out.println(chars[i]);
for(int j=i+1 ; j<chars.length ; j++){
if(chars[i]==chars[j]){
charTemp=chars[i] ;
break ;
}
}
if(charTemp!= ' '){
break ;
}
}
if(charTemp!= ' '){
System.out.println("第一个重复的是:" + charTemp) ;
}else{
System.out.println("没有重复的!");
}

}
wjjwt 2010-04-24
  • 打赏
  • 举报
回复
5楼的是对的,运行了,没问题,谢谢
lzw0286 2010-04-24
  • 打赏
  • 举报
回复
2楼的方法也不错。。
lzw0286 2010-04-24
  • 打赏
  • 举报
回复
不好意思格式乱了。我是直接copy在回复里的。写的时候格式是好的,不知道为什么一回复就乱了。
lzw0286 2010-04-24
  • 打赏
  • 举报
回复
public static void checkRepeatChar(String inputString) {
char[] chars = inputString.toCharArray();
char repeatChar = ' ';
for (int i = 0; i < chars.length; i++) {
for (int j = i+1; j < chars.length; j++) {
if (chars[i] == chars[j]) {
repeatChar = chars[i];
break;
}
}
if (repeatChar != ' ') {
break;
}
}
if(repeatChar != ' ')
System.out.println("第一个重复的是:" + repeatChar);
else
System.out.println("没有重复的字符");
}
小李子 2010-04-24
  • 打赏
  • 举报
回复
//简单代码如下,没有调试过
//你可以根据实际需求更改,比如考虑大小写....
int[] counts = new int[26];
for(int i = 0; i < 26 ; i++)
counts[i] = 0;

for(int i = 0; i < str.length(); i++)
counts[str.charAt(i)-'a'] ++;

for(int i = 0; i < str.length(); i++){
if(counts[str.charAt(i)-'a'] > 1)
return str.charAt(i);
}
铑枪--突廆孒 2010-04-24
  • 打赏
  • 举报
回复

package cn.sky;

import java.util.HashMap;
import java.util.Map;

public class Test {
public static void main(String[] args) throws Exception {
// 说明:请使用至少1.5的jdk/jre ,并开启自动封装模式+范型模式
String str = "abcdba";
Map<Character, Integer> maps = new HashMap<Character, Integer>();
int length = str.length();// 为不了每次都调用str的length方法,这里用个临时变量保存起来
Character tempChar;// 字符
Integer tempNumber;// 字符之前出现的次数
for (int i = 0; i < length; i++) {
tempChar = str.charAt(i);
tempNumber = maps.get(tempChar);
if (tempNumber == null) {// 为空,说明还没有该字符的重复,将其之前出现的次数设置为0。
tempNumber = 0;
}
if (++tempNumber == 2) {// 如果重复出现的话,其次数至少是2次。之后的运行就没必要了
System.out.println("第一次出现的重复字符是:" + tempChar);
return;
}
maps.put(tempChar, tempNumber);// 将出现的字符及其数目保存起来。
}
}
}

wd9053 2010-04-24
  • 打赏
  • 举报
回复
import java.util.HashSet;

public class Test
{
public static void main(String[] args)
{
HashSet<Character> hs = new HashSet<Character>();
String test = "asfdsfa";
char[] arr = test.toCharArray();
for(int i = 0; i < arr.length; i++)
{
if(!hs.add(arr[i]))
{
System.out.println("index:" + i + " ,value:" + arr[i]);
return;
}
}
}
}
小李子 2010-04-24
  • 打赏
  • 举报
回复
开一个长度为26的数组,记录26个字母在字符串中出现的次数
然后再扫描一下字符串,如果数组中对应的次数大于1,就是重复的,返回之
相关推荐

62,569

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告