LeetCode字符串基础刷题详解

LeetCode字符串基础刷题详解,第1张

LeetCode字符基础刷题详解

387. 字符串中的第一个唯一字符

public class Solution{
    //387. 字符串中的第一个唯一字符
    // 给定一个字符串,找到它的第一个不重复的字符,
    // 并返回它的索引。如果不存在,则返回 -1。
    //解法思路:我们可以对字符串进行两次遍历。第一次遍历目的是构造字符串中所有字符出现的次数,第二次便利输出字符串第一个次数为一的字符
    public int firstUniqChar(String s) {
        char[] arr=new char[26];
        char[] strArr=s.toCharArray();//构建字符串数组用于遍历计数
        for (char c:strArr){//我们此时还需要一个方法能确定字符在对应数组中的位置
            arr[seekIndex(c)]++;//字符出现一次我们就增加他的次数
        }
        int num=0;//用于技术字符在字符串中的位置
        for (char c:strArr){
            if (arr[seekIndex(c)]==1){
               // return s.indexOf(c);方法一:利用String.index方法直接返回字符在字符串中的位置
                return num;//方法二:采用了计数
            }
            num++;
        }
        return -1;//遍历数组都没有出现则说明不存在出现次数为一的字符
    }
    public int seekIndex(char c){
        return c-'a';
    }

}

125. 验证回文串

方法一:利用双指针

public class Solution {
    //给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写
    //解法一:利用双指针,分别从前后遍历比较
    public boolean isPalindrome(String s) {
        //由于此题不区分大小写,所以我们把字符串转为小写进行判断
        char strArr[]=s.toLowerCase().toCharArray();
        int i=0;//左指针
        int j=s.length()-1;//右指针
        while (i='a'&&c<='z'||c>='0'&&c<='9') {
            return true;
        }else{
            return false;
        }

    }
}

方法二:利用reverse

public boolean isPalindrome(String s) {
            char strArr1[]=s.toLowerCase().toCharArray();
            StringBuffer sb=new StringBuffer(s);
            char strArr2[]=sb.reverse().toString().toLowerCase().toCharArray();
            int i=0;
            int j=0;
            while (i<=strArr1.length-1&&j<=strArr2.length-1){
                while (i<=strArr1.length-1&&!isValid(strArr1[i])){
                    i++;
                }
                while (j<=strArr2.length-1&&!isValid(strArr2[j])){
                    j++;
                }
                if (i<=strArr1.length-1&&j<=strArr2.length-1&&strArr1[i]!=strArr2[j]){
                    return false;
                }
                i++;
                j++;
            }
            return true;


    }
    public boolean isValid(char c){
        if (c>='a'&&c<='z'||c>='0'&&c<='9') {
            return true;
        }
            return false;
    }

HJ1 字符串最后一个单词的长度

 public class Main{
    public static int seekLastWordLength(String s){
        int i=s.lastIndexOf(" ");
        String s1=s.substring(i+1);
        return s1.length();
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        int num=Main.seekLastWordLength(s);
        System.out.print(num);
    }
}
public class Main{
    public static int seekLastWordLength(String s){
        int i=s.lastIndexOf(" ");
        return s.length()-i-1;
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        int num=Main.seekLastWordLength(s);
        System.out.print(num);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存