栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode字符串基础刷题详解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703023.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号