• 牛客网刷题——JAVA


    在这里插入图片描述

    个人主页:熬夜磕代码丶
    作品专栏: java se
    我变秃了,也变强了
    给大家介绍一款程序员必备刷题平台——牛客网
    点击注册一起刷题收获大厂offer吧
    在这里插入图片描述

    一、字符串中的第一个唯一字符

    给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。
    在这里插入图片描述

    public static void main(String[] args) {
            int i = firstUniqChar("nowcoder");
            System.out.println(i);
        }
        public static int firstUniqChar(String s) {
            int[] count = new int[26];
            for (int i = 0; i <s.length() ; i++) {
                count[s.charAt(i)-'a']++;
            }
            for (int i = 0; i < s.length(); i++) {
                if(count[s.charAt(i)-'a'] == 1) {
                    return i;
                }
            }
            return -1;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

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

    计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
    HJ1 字符串最后一个单词的长度
    在这里插入图片描述
    方法1:

    public  static void  main(String [] args) throws Exception{
           Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();
            String[] strings = s.split(" ");
            System.out.println(strings[strings.length-1].length());
         }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    方法2:

    public  static void  main(String [] args) throws Exception{
            Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();
            int count = 0;
            for (int i = s.length()-1; i >= 0; i--) {
                if(s.charAt(i) != ' ')
                {
                    count++;
                }else{
                    break;
                }
            }
            System.out.println(count);
         }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    三、字符串中的单词数

    统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

    在这里插入图片描述
    在这里插入图片描述

    public int countSegments(String s) {
            s += ' ';
            int count = 0;
            for(int i=0; i<s.length()-1;i++) {
                if(s.charAt(i)!=' '&&s.charAt(i+1) == ' '){
                    count++;
                }
            }
            return count;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    四、转换成小写字母

    给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
    方法1:

     public String toLowerCase(String s) {
          return s.toLowerCase();
        }
    
    • 1
    • 2
    • 3

    方法2:

    public String toLowerCase(String s) {
           char[] ch = s.toCharArray();
            for (int i = 0; i < ch.length; i++) {
                ch[i] = Character.toLowerCase(s.charAt(i));
            }
            return new String(ch);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    五、验证回文串

    给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
    方法1:

    public static boolean isTrue(char c) {
            if((c >= 'a' && c <= 'z')||(c >= '0' && c <= '9')) {
                return true;
            }else {
                return false;
            }
        }
        public static boolean isPalindrome(String s) {
            s = s.toLowerCase();
            int left = 0;
            int right = s.length()-1;
            while (left < right) {
                while(left < right && !isTrue(s.charAt(left))) {
                    left++;
                }
                while(left < right && !isTrue(s.charAt(right))) {
                    right--;
                }
                if(s.charAt(left) != s.charAt(right)) {
                    return false;
                }else {
                    right--;
                    left++;
                }
            }
            return true;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    方法2:

    public static boolean isPalindrome(String s) {
            s = s.toLowerCase();
            int left = 0;
            int right = s.length()-1;
            while(left < right) {
                while(left < right &&  !Character.isLetterOrDigit(s.charAt(left)) ) {
                    left++;
                }
                while(left < right &&  !Character.isLetterOrDigit(s.charAt(right)) ) {
                    right--;
                }
                if(s.charAt(left) != s.charAt(right)) {
                    return false;
                }else {
                    left++;
                    right--;
                }
            }
            return true;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    vulfocus——solr远程命令执行(CVE-2019-17558)
    【Linux】基础开发工具——vim入门操作
    C/C++标准库和标准模板库总结
    java计算机毕业设计医院远程诊断系统源代码+系统+数据库+lw文档
    SQL必需掌握的100个重要知识点:使用存储过程
    《Cross-view Transformers for real-time Map-view Semantic Segmentation》论文笔记
    【云原生】SpringCloud-Spring Boot Starter使用测试
    LAXCUS授权开源协议
    版权和商标的那些事
    Zuul使用总结
  • 原文地址:https://blog.csdn.net/buhuisuanfa/article/details/126307510