当前位置: 首页> 科技> 名企 > 刷题篇 - 01

刷题篇 - 01

时间:2025/7/18 3:06:46来源:https://blog.csdn.net/YX54201/article/details/140904682 浏览次数:2次

目录

题目一:

题目二:

题目三:

题目四:

题目五:

题目六:

题目七:


题目一:

387. 字符串中的第一个唯一字符 - 力扣(LeetCode)

public int firstUniqChar(String s) {int[] array = new int[26];for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);array[ch - 'a']++;}for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if (array[ch - 'a'] == 1) {return i;}}return -1;
}

题目二:

字符串最后一个单词的长度_牛客题霸_牛客网 (nowcoder.com)

本题已经说了,单词之间有空格隔开,且依据通过的代码来看,并不存在单词之间有多个空格。

public static void main(String[] args) {Scanner scan = new Scanner(System.in);while (scan.hasNextLine()) {String str = scan.nextLine();//方法一:使用split以空格分隔// String[] tmp = str.split(" ");// int index = tmp[tmp.length - 1].length();// System.out.println(index);//方法二:使用lastIndexOf找到第一个空格所在的下标index,//然后用substirng截取从s中下标为index - 1至最后的字符串int index = str.lastIndexOf(' ');String lastString = str.substring(index + 1);System.out.println(lastString.length());}
}

题目三:

125. 验证回文串 - 力扣(LeetCode)

public boolean isPalindrome(String s) {//将字符串中所有的大写字母转为小写字母String str = s.toLowerCase();int left = 0;int right = str.length() - 1;while (left < right) {while (!isCharacterNumber(str.charAt(left)) && left < right) {left++;}while (!isCharacterNumber(str.charAt(right)) && left < right) {right--;}if (str.charAt(left) == str.charAt(right)) {//别忘了相等时要更新下标left++;right--;} else {return false;}}return true;
}//判断是否为字母数组字符
//判断某字符是否为字母,isLetter,判断某字符是否为数字,isDigit
public static boolean isCharacterNumber(char ch) {if (Character.isDigit(ch) || Character.isLetter(ch)) {return true;} else {return false;}
}

题目四:

709. 转换成小写字母 - 力扣(LeetCode)

public String toLowerCase(String s) {StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if (ch >= 'A' && ch <= 'Z') {ch += 32;}stringBuilder.append(ch);}return stringBuilder.toString();
}

题目五:

434. 字符串中的单词数 - 力扣(LeetCode)

通过测试代码可以发现当输入的字符串时“”空字符串,要返回0,而不能是1。

题目有描述说,能够成为统计的个数之一,必须是连续的不是空格的字符(那我们以空格作为分割的标记就好了,split方法中分割的标记并不会记录到返回的数组中,但我们会发现当有连续的空格时,分割出来的数组中会有“多余的”,"",我们不能把它们算在最后的结果里面)。

【补充说明split方法是如何分割的】:它是每找到一次分割的记号就分割一次,例如:

s  ieo   isl,第一次分割的结果为s,ieo   isl,第二次分割的结果为"",ieo   isl,第三次分割的结果为ieo,  isl,第四次分割的结果为“”, isl,第五次分割的结果为“”,isl,最后分割的结果为:s,"",ieo,"","",isl

 public int countSegments(String s) {if (s.length() == 0) {return 0;}String[] str = s.split(" ");int count = 0;for (String tmp : str) {if (!tmp.isEmpty()) {count++;} }return count;
}

题目六:

字符集合_牛客题霸_牛客网 (nowcoder.com)

每次拿到ch后看cur字符串中是否有这个字符,没有就拼接上。

public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString s = in.nextLine();StringBuilder StringBuilder = new StringBuilder();for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);String str = ch + "";if (StringBuilder.indexOf(str) == -1) {StringBuilder.append(str);}}String end = StringBuilder.toString();System.out.println(end);}
}

题目七:

合并两个有序的数组__牛客网 (nowcoder.com)

 public static int[] func7(int[] A, int m, int[] B, int n) {int i = m - 1;int j = n - 1;int k = m + n - 1;while (i >= 0 && j >= 0) {if (A[i] > B[j]) {A[k] = A[i];i--;k--;} else {A[k] = B[j];j--;k--;}}while (j >= 0) {A[k] = B[j];j--;k--;}while (i >= 0) {A[k] = A[i];i--;k--;}return A;
}
关键字:刷题篇 - 01

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: