signed

QiShunwang

“诚信为本、客户至上”

字符串题(2021-6-24)

2021/6/24 22:50:05   来源:

1.第一个只出现一次字符的位置

import java.util.*;
public class Solution{
   public int FirstNotRepeatingChar(String str){
     if(str==null||str.length()==0)  return -1;
     char[] c=str.toCharArray();//将字符串数组转换成字符串
     LinkedHashMap<Character,Integer> hash=new LinkedHashMap<Character,Integer>();
     for(char item:c){//遍历字符串数组
        if(hash.containsKey(item))//如果链表中包含重复的字符
            hash.put(item,hash.get(item)+1);
        else
            hash.put(item,1);//否则没有重复的话,就传入链表中
     }
     //用一个类似hash的东西来存储字符出现的次数
     for(int i=0;i<str.length();i++){
         if(hash.get(str.charAt(i))==1){//获取链表中不重复的字符串索引
              return i;
         }
     }
     return -1;
  }
}
思路:1.如果字符串为空,字符串的长度为0,返回-12.将字符串数组转换成字符串
      3.创建一个hash集合,存储结果
      4.遍历字符串,如果hash集合中包含重复的字符
      就把重复的字符的索引传入链表。否则没有
```重复的话,就传入链表中。
     5.遍历hash集合,获取链表中不重复的字符串的索引。

## 2.左旋转字符串

```java
public class Solution{
  public String LeftRotateString(String str,int n){
  if(str==null||str.length()==0)  return str;
  return str.substring(n)+str.substring(0,n);
 }
}
思路:1.如果字符串为空或者字符串的长度为0,返回str
      2.substring(截取)n为后的字符串+(0-n)的字符串。