文章图片
个人主页:熬夜磕代码丶
作品专栏: 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 .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:
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);
}
三、字符串中的单词数 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。
文章图片
文章图片
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;
}
推荐阅读
- JAVA|Java 继承详解
- JAVA|七千字带你了解异常处理
- scau|18937 阿克曼(Ackmann)函数
- java基础|一文搞懂java中的高大上技术“反射”
- 谷粒商城|谷粒商城--消息队列--高级篇笔记十
- 大数据|滴滴开源了哪些有意思的项目()
- 数据库|滴滴技术牛逼吗(看它开源了哪些有意思的项目)
- 数据库|SpringBoot 项目模板(摆脱步步搭建)
- 分布式|阿里云周晶(我是如何选择技术方向的())