论坛首页 招聘求职论坛

面试题目字符统计

浏览 22639 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-05  
private static char getDuplicateChr(String param) {
char[] chrList = param.toCharArray();
List<Character> unique = new ArrayList<Character>();
for(int i=0;i<chrList.length;i++) {
if (unique.contains(chrList[i])) {
continue;
} else {
int index = param.indexOf(chrList[i]);
            if (index == i) {
                if (-1 != param.substring(index+1).indexOf(chrList[i])) {
                unique.add(chrList[i]);
                continue;
                } else {
                return chrList[i];
                }
            } else {
            break;
            }
}
}
return ' ';
}
0 请登录后投票
   发表时间:2009-08-05  
还一种更快的:
private static char getDuplicateChr2(String param) {
char[] chrList = param.toCharArray();
for (int i=0;i<chrList.length;i++) {
if (param.indexOf(chrList[i]) == param.lastIndexOf(chrList[i])) {
return chrList[i];
}
}
return ' ';
}
0 请登录后投票
   发表时间:2009-08-17  
这种算法题,就不是让你用java类库来做的,肯定是要用最简单的东西,一用到类库效率要低好几个等级
0 请登录后投票
   发表时间:2009-08-18   最后修改:2009-08-18
           来个php的
            $old =str_split("eerrttyyf");
            $chars = array_flip($old);
            $l = count($old);
            for($i=0;$i<$l;$i++){
                if($i==$chars[$old[$i]]){
                    echo($old[$i]);
                    break;
                }
                else
                {
                    $chars[$old[$i]]=0;
                }
            }
0 请登录后投票
   发表时间:2009-08-18  
最好不要把count放在循环里!犯了错误
0 请登录后投票
   发表时间:2009-12-02   最后修改:2009-12-02

一个时间复杂度为n的算法。第一次发帖有什么不足之处还请指教哈!

 

//一个时间复杂度为n的算法

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

public class TestClass {
	public static void main(String[] args) {
		HashMap<Character, Integer> map = new HashMap<Character, Integer>();
		String str = "kabcdabc";
		int len = str.length();
		for (int i = 0; i < len; i++) {
			char c = str.charAt(i);
			if (map.containsKey(c)) {
				map.remove(c);
			} else {
				map.put(c, i);
			}
		}

		int minIndex = len;
		Entry<Character, Integer> minEntry = null;
		for (Iterator<Entry<Character, Integer>> iter = map.entrySet()
				.iterator(); iter.hasNext();) {
			Entry<Character, Integer> entry = iter.next();
			if (entry.getValue() < minIndex) {
				minEntry = entry;
			}
		}
		System.out.println(minEntry.getKey());
	}
}

 输出结果为:

k

0 请登录后投票
   发表时间:2009-12-02  
这种字符统计,必然是一个255大小的状态数组啊,在c程序员看来都是拿不出手的题目,用什么库函数啊。
0 请登录后投票
   发表时间:2010-01-11  
asd 写道
这种字符统计,必然是一个255大小的状态数组啊,在c程序员看来都是拿不出手的题目,用什么库函数啊。

可是得输出第一个不重复的字符啊,你的方法能行么??
0 请登录后投票
   发表时间:2010-01-11  
piao_bo_yi 写道
asd 写道
这种字符统计,必然是一个255大小的状态数组啊,在c程序员看来都是拿不出手的题目,用什么库函数啊。

可是得输出第一个不重复的字符啊,你的方法能行么??

明白了,原来能行。
0 请登录后投票
   发表时间:2010-01-11  
asd 写道
这种字符统计,必然是一个255大小的状态数组啊,在c程序员看来都是拿不出手的题目,用什么库函数啊。

“箱子排序”果然是这种问题的通解啊~~~
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics