/**
* 编写一个高效率函数来找出一个字符串中第一个无重复字符.
* 例如:”total”中的o,”teeter”中的r.要求算法效率优于O(n2).函数调用模型如下:
* Public static Character FirstNoRepeated(String str);
*/
public class FirstNoRepeated {
public static void main(String[] args) {
System.out.println(FirstNoRepeated("total"));
System.out.println(FirstNoRepeated1("teeter"));
}
/**
* 利用map记录字符串中每个字符的个数
* @param str
* @return
*/
public static Character FirstNoRepeated(String str){
Map<Character,Integer> map = new HashMap<Character,Integer>();
for(int i=0; i<str.length();i++){
if(!map.containsKey(str.charAt(i))){
map.put(str.charAt(i), 1);
}else{
Integer k = map.get(str.charAt(i));
map.put(str.charAt(i), ++k);
}
}
//按字符串的顺序返回首次出现的字符
for(int i = 0 ; i < str.length(); i++){
if(map.get(str.charAt(i)) == 1){
return str.charAt(i);
}
}
return null;
}
/**
* 方式一:双重循环
* @param str
* @return
*/
public static Character FirstNoRepeated1(String str){
int count = 0;
char c;
//拿出每位中的每个字符与原字符串中的每个字符进行比较并记录出现的次数
for(int i=0;i<str.length();i++){
c = str.charAt(i);
for(int j=0;j<str.length();j++){
char cc = str.charAt(j);
if(c == cc){
count ++;
}
}
//返回首次出现的第一个字符
if(count == 1){
return c;
}
count = 0;
}
return null;
}
}
分享到:
相关推荐
在随意给出的2个字符串中,找出它们共同的最长的子串。 【输入】 输入文件的第一行为一个整数2,接下来有2行,每行为一个字符串,每个字符串的长度均小于255。 【输出】 输出只有一行,即:共同的最长子串,若有多个...
入一个字符,再输入一个以回车结束的字符串(少于80个字符)在字符串中查找该字符。
这是学习书上的一个小程序。功能是将S和T这两个单链表存储的串,找出S串中第一个不在T中出现的字符。
1130:找第一个只出现一次的字符 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 82755 通过数: 31415 【题目描述】 给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。 【输入...
还是只是记录下来相关位置——这是我底下未完成版本1想到的思路——用一个count[sizeof(A)]数组记录下A每个位置作为起点所能和B达到的最大重合,最后判断查找数组中最大值,此时目标子字符串的起点下标(i)和 i ...
下面程序的功能是删除字符串中第一次出现的a字符。其中有两处错误.cpp
LeetCode问题28要求实现strStr()函数,即在一个主字符串(haystack)中找出第一个出现的指定子字符串(needle)的索引,如果不存在,则返回-1。如果needle为空字符串,返回0。 这段Fortran程序定义了一个strStr函数,它...
//找出字符串中第一个不重复的字符 // firstUniqueChar(vdctdvc); --> t function firstUniqueChar(str){ var str = str || , i = 0, k = , _char = , charMap = {}, result = {name: ,index: str.length}; for(i...
第一、找出字符或者字符串的类型,是数字、字母还是其他特定字符,是可打印字符,还是不可打印字符(一些控制字符)。 第二、找出组成字符串的字符个数和字符串的存储结构(比如数组)。 第三、对串的常规操作:求子串、...
python python_leetcode面试题解之第28题找出字符串中第一个匹配项的下标_python题解
strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。 注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。 【返回值】如果找到指定的字符则返回...
//找出字符串中第一个不重复的字符 // firstUniqueChar(“vdctdvc”); –> t function firstUniqueChar(str){ var str = str || “”, i = 0, k = “”, _char = “”, charMap = {}, result = {...
c语言基础 C语言基础_C语言编程基础之Leetcode编程题解之第28题找出字符串中第一个匹配项的下标
第一个任务是要求用自己最擅长的语言编程读取一个TXT文本中的字符,找出每一章节中"Arthur"出现的次数和显示出程序所用的总时间。很明显的这就是一个字符串匹配问题。所以我先用一个传统的字符串比较方法来实现,...
是一个在stackoverflow上的问题。 给出两个长度相等的字符串,找出这两个字符串中第一个不同的字符位置。
c++ c++_c++编程基础之leetcode题解第28题找出字符串第一个匹配项的下标
主要介绍了C#找出字符串中第一个字母并大写的方法,通过C#面向对象的方式定义了类的成员函数实现字符串转换的功能,需要的朋友可以参考下
_ _ _ _ _ _ _ _ _ _ _ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ ( P | e | r | m | u | t | a | t | i | o | n ) \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ ... 因此,在第一个强力解决方案之后,