从0到1|牛客网刷题——JAVA

从0到1|牛客网刷题——JAVA
文章图片

个人主页:熬夜磕代码丶
作品专栏: java se
我变秃了,也变强了
给大家介绍一款程序员必备刷题平台——牛客网
点击注册一起刷题收获大厂offer吧
从0到1|牛客网刷题——JAVA
文章图片


文章目录
  • 一、字符串中的第一个唯一字符
  • 二、字符串最后一个单词的长度
  • 三、字符串中的单词数
  • 四、转换成小写字母
  • 五、验证回文串

一、字符串中的第一个唯一字符 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。
从0到1|牛客网刷题——JAVA
文章图片

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

从0到1|牛客网刷题——JAVA
文章图片

二、字符串最后一个单词的长度 计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
HJ1 字符串最后一个单词的长度
从0到1|牛客网刷题——JAVA
文章图片

方法1:
publicstatic voidmain(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()); }

方法2:
publicstatic voidmain(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); }

三、字符串中的单词数 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
从0到1|牛客网刷题——JAVA
文章图片

从0到1|牛客网刷题——JAVA
文章图片

public int countSegments(String s) { s += ' '; int count = 0; for(int i=0; i.length()-1; i++) { if(s.charAt(i)!=' '&&s.charAt(i+1) == ' '){ count++; } } return count; }

四、转换成小写字母 给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
方法1:
public String toLowerCase(String s) { return s.toLowerCase(); }

方法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:
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; }

【从0到1|牛客网刷题——JAVA】方法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; }

    推荐阅读