牛客网刷题——JAVA
Posted 熬夜磕代码丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客网刷题——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;
二、字符串最后一个单词的长度
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于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());
方法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);
三、字符串中的单词数
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
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;
四、转换成小写字母
给你一个字符串 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;
方法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;
以上是关于牛客网刷题——JAVA的主要内容,如果未能解决你的问题,请参考以下文章