题目:字符串中的第一个唯一字符
链接:387. 字符串中的第一个唯一字符 - 力扣(LeetCode)
给定一个字符串 s
,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1
。
示例 1:
输入: s = "leetcode" 输出: 0
示例 2:
输入: s = "loveleetcode" 输出: 2
示例 3:
输入: s = "aabb" 输出: -1
提示:
1 <= s.length <= 105
s
只包含小写字母
思路:
1.先遍历原来的字符串;
2.把对应字符放到对应的计数数组下然后++;
3.再遍历一遍原来的字符串,然后看每个字符此时在计数器上出现的次数,出现一次的返回。
解答:
class Solution {
public int firstUniqChar(String s) {
int[] count=new int[26];
for(int i=0;i<s.length();i++){
char ch=s.charAt(i);
count[ch-'a']++;
}
for(int i=0;i<s.length();i++){
char ch=s.charAt(i);
if(count[ch-'a']==1){
return i;
}
}
return -1;
}
}
题目:HJ1 字符串最后一个单词的长度
描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:
hello nowcoder
输出:
8
说明:
最后一个单词为nowcoder,长度为8
思路:
1.输入一串字符;
2.找出从后往前第一个的空格处;
3.截取空格处+1的字符串。并求其长度。
链接:字符串最后一个单词的长度_牛客题霸_牛客网
解答:
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
String s=in.nextLine();
int k = s.lastIndexOf(' ');
String ret = s.substring(k+1);
System.out.println(ret.length());
}
}
}
题目:验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s
,如果它是 回文串 ,返回 true
;否则,返回 false
。
示例 1:
输入: s = "A man, a plan, a canal: Panama" 输出:true 解释:"amanaplanacanalpanama" 是回文串。
示例 2:
输入:s = "race a car" 输出:false 解释:"raceacar" 不是回文串。
示例 3:
输入:s = " " 输出:true 解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。 由于空字符串正着反着读都一样,所以是回文串。
提示:
1 <= s.length <= 2 * 105
s
仅由可打印的 ASCII 字符组成
思路:
1.先把字符串转换成小写
2.规定字符串的标准,定义左右变量
3.两个利用循环,先遍历找出范围,左边不能大于右边,然后再循环把不符合标准的跳过
4.最后比较,如果不相等直接返回false,相等的继续遍历下一个,直到遍历完成之后,都相等则返回true.
链接:125. 验证回文串 - 力扣(LeetCode)
解答:
class Solution {
private boolean islegal(char ch){
if(ch>='a'&&ch<='z'||ch>='0'&&ch<='9'){
return true;
}
return false;
}
public boolean isPalindrome(String s) {
s=s.toLowerCase();
int left=0;
int right=s.length()-1;
while(left<right){
while(left<right&&!islegal(s.charAt(left))){
left++;
}
while(left<right&&!islegal(s.charAt(right))){
right--;
}
if(s.charAt(left)!=s.charAt(right)){
return false;
}else{
left++;
right--;
}
}
return true;
}
}
标签:字符,基于,Java,String,示例,输出,字符串,输入,回文
From: https://blog.csdn.net/2401_86415114/article/details/143220754