String
USC_ECE
这个作者很懒,什么都没留下…
展开
-
JZ27 字符串的排列
https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/mian-shi-ti-38-zi-fu-chuan-de-pai-lie-hui-su-fa-by/代码如下:import java.util.*;public class Solution { public ArrayList<String> Permutation(String str) { ArrayList<原创 2020-09-06 23:14:09 · 138 阅读 · 0 评论 -
HJ5 进制转换
这道题需要注意的点是要从第2位开始读取数字,因为开头两个是0x。代码如下:import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNextLine()){ int sum = 0; String s = sc.nex原创 2020-08-08 10:10:56 · 438 阅读 · 0 评论 -
HJ4 字符串分割
StringBuilder的substring()方法返回的是String,而delete()方法返回的还是StringBuilder(index是左闭右开)。代码如下:import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNextLine()){原创 2020-08-08 09:38:39 · 562 阅读 · 0 评论 -
LeetCode 520. Detect Capital
这道题使用一个count变量来统计大写字母出现的次数。当且仅当下列三种情况出现时才是正确的:count == 0: 全是小写字母 count == n: 全是大写字母 count == 1 && word.charAt(0) <= 'Z': 只有开头是大写字母值得注意的是大写字母的ASCII码小于小写字母的ASCII码,代码如下:class Solution { public boolean detectCapitalUse(String word) {原创 2020-08-03 10:23:54 · 109 阅读 · 0 评论 -
JZ2 替换空格
public class Solution { public String replaceSpace(StringBuffer str) { int count = 0; int oldLength = str.length(); for(int i = 0; i < oldLength; i++){ if(str.charAt(i) == ' '){ count++; .原创 2020-07-21 17:16:26 · 92 阅读 · 0 评论 -
LeetCode 49. Group Anagrams
首先初始化 key = "0#0#0#0#0#",数字分别代表 abcde 出现的次数,# 用来分割。这样的话,"abb" 就映射到了 "1#2#0#0#0"。"cdc" 就映射到了 "0#0#2#1#0"。"dcc" 就映射到了 "0#0#2#1#0"。代码如下:class Solution { public List<List<String>> groupAnagrams(String[] strs) { // Corner case...原创 2020-07-19 15:19:54 · 97 阅读 · 0 评论 -
LeetCode 415. Add Strings
从后往前遍历两个String,把对应位的和放入StringBuilder。循环结束后检查是否还有进位,有的话再添加一位1。将StringBuilder反转后再转化成String输出。代码如下:class Solution { public String addStrings(String num1, String num2) { int i = num1.length() - 1, j = num2.length() - 1; StringBuilder res原创 2020-07-19 14:47:49 · 91 阅读 · 0 评论 -
LeetCode 91. Decode Ways
Approach 1 Recursionclass Solution { public int numDecodings(String s) { return helper(s, 0); } private int helper(String s, int start){ if(start == s.length()){ return 1; } if(s.charAt(start) == '原创 2020-07-19 13:00:02 · 100 阅读 · 0 评论 -
LeetCode 205. Isomorphic Strings
其实我们不需要将字符串完全转换,我们可以用两个 map 分别记录两个字符串每个字母的映射。将所有字母初始都映射到 0。记录过程中,如果发现了当前映射不一致,就可以立即返回 false 了。这里我们可以直接用char来做索引,使用的是它们对应的ASCII码的值。代码如下:class Solution { public boolean isIsomorphic(String s, String t) { int[] map1 = new int[128]; int[原创 2020-07-19 09:00:51 · 78 阅读 · 0 评论 -
LeetCode 5. Longest Palindromic Substring
第 1 步:定义状态dp[i][j] 表示子串 s[i..j] 是否为回文子串,这里子串 s[i..j] 定义为左闭右闭区间,可以取到 s[i] 和 s[j]。第 2 步:思考状态转移方程在这一步分类讨论(根据头尾字符是否相等),根据上面的分析得到:dp[i][j] = (s[i] == s[j]) and dp[i + 1][j - 1]说明:「动态规划」事实上是在填一张二维表格,由于构成子串,因此 i 和 j 的关系是 i <= j ,因此,只需要填这张表格对角线以上的部分。看到 dp原创 2020-07-19 07:07:59 · 250 阅读 · 0 评论 -
LeetCode 28. Implement strStr()
暴力法,双循环。外循环代表substring在haystack的起始位置,内循环代表我们正在比较needle的index。代码如下:class Solution { public int strStr(String haystack, String needle) { // Corner case if(needle.isEmpty()){ return 0; } for(int i = 0; i <原创 2020-07-19 06:12:37 · 74 阅读 · 0 评论 -
LeetCode 9. Palindrome Number
取出后半段数字进行翻转。这里需要注意的一个点就是由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。具体做法如下:每次进行取余操作 ( %10),取出最低的数字:y = x % 10将最低的数字加到取出数的末尾:revertNum = revertNum * 10 + y每取一个最低位数字,x 都要自除以 10判断 x 是不是大于revertNum ,当它不大于的时候,说明数字已.原创 2020-07-18 08:46:38 · 88 阅读 · 0 评论 -
LeetCode 125. Valid Palindrome
这道题就是用left和right两个指针去遍历String就好了。还有就是记住Character的几个API:isLetterOrDigit() 和toLowerCase()。代码如下:class Solution { public boolean isPalindrome(String s) { int left = 0, right = s.length() - 1; while(left < right){ while(le.原创 2020-07-18 07:51:38 · 84 阅读 · 0 评论 -
LeetCode 3. Longest Substring Without Repeating Characters
这道题是一道滑动窗口的典型题目。class Solution { public int lengthOfLongestSubstring(String s) { Set<Character> window = new HashSet<>(); int slow = 0, fast = 0, ans = 0, n = s.length(); while(fast < n){ if(!window原创 2020-07-18 07:01:31 · 82 阅读 · 0 评论 -
LaiCode 397. Right Shift By N Characters
public class Solution { public String rightShift(String input, int n) { // Write your solution here if(input.length() == 0){ return input; } char[] array = input.toCharArray(); int k = n % array.length; reverse(array, 0, ar.原创 2020-07-12 09:08:30 · 233 阅读 · 0 评论 -
LaiCode 197. ReOrder Array
public class Solution { public int[] reorder(int[] array) { // Write your solution here if (array.length % 2 == 1) { reorder(array, 0, array.length - 2); } else { reorder(array, 0, array.length - 1); } return array; } private void reo.原创 2020-07-09 09:10:22 · 246 阅读 · 0 评论 -
LeetCode 186. Reverse Words in a String II
这道题其实是151的基础。代码如下:class Solution { public void reverseWords(char[] s) { reverse(s, 0, s.length - 1); int head = 0, tail = 0; for(int i = 0; i < s.length; i++){ if(s[i] != ' ' && (i == 0 || s[i - 1] == '原创 2020-07-08 14:07:11 · 112 阅读 · 0 评论 -
LeetCode 151. Reverse Words in a String
class Solution { public String reverseWords(String s) { // Remove the spaces String str = removeSpace(s); char[] words = str.toCharArray(); // Reverse the whole sentence reverse(words, 0, words.length - 1); ...原创 2020-07-08 10:49:13 · 142 阅读 · 0 评论 -
LeetCode 344. Reverse String
Iterative Approach class Solution { public void reverseString(char[] s) { int left = 0, right = s.length - 1; while(left < right){ char temp = s[left]; s[left] = s[right]; s[right] = temp;原创 2020-07-08 09:37:25 · 117 阅读 · 0 评论 -
LaiCode 281. Remove Spaces
public class Solution { public String removeSpaces(String input) { // Write your solution here if(input.length() == 0){ return input; } char[] array = input.toCharArray(); int slow = 0; for(int fast = 0; fast < array.len.原创 2020-07-08 09:32:47 · 188 阅读 · 0 评论 -
LeetCode 67. Add Binary
StringBuilder的append()方法可以直接使用int作为参数:Thejava.lang.StringBuilder.append(int i)method appends the string representation of theintargument to this sequence.class Solution { public String addBinary(String a, String b) { StringBuilder sb = n...原创 2020-07-08 08:44:54 · 85 阅读 · 0 评论 -
LeetCode 242. Valid Anagram
我觉得这道题有点类似于比较两个字符串的字母出现频率直方图https://leetcode-cn.com/problems/valid-anagram/solution/hua-jie-suan-fa-242-you-xiao-de-zi-mu-yi-wei-ci-by/class Solution { public boolean isAnagram(String s, String t) { // First check their lengths if(原创 2020-07-07 14:09:55 · 148 阅读 · 0 评论 -
String类题目会用到的API(持续更新)
String类:toCharArray() 方法将字符串转换为字符数组。经常出现在for循环中 e.g., for(char c : s.toCharArray())。 length() 方法用于返回字符串的长度。 charAt() 方法用于返回指定索引处的字符,索引范围为从 0 到 length() - 1。 String() 构造方法可以将char array转换为字符串。StringBuilder类:toString() 方法返回此序列中数据的字符串表示形式。 append()原创 2020-07-07 09:31:55 · 147 阅读 · 0 评论 -
LeetCode 1119. Remove Vowels from a String
class Solution { public String removeVowels(String S) { StringBuilder sb = new StringBuilder(); for(char c: S.toCharArray()){ if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){ continue; .原创 2020-07-07 09:13:51 · 100 阅读 · 0 评论 -
LeetCode 150. Evaluate Reverse Polish Notation
这也是一道很经典的stack类型题目。有几个需要注意的点:输入是一个String[], 每个元素包括数字和运算符都是String需要双引号。 判断String是否相等使用euqals()方法:https://www.jianshu.com/p/3cd1912211d4; 加法和乘法具有交换律,所有我们不需要命名栈顶的两个数字;而减法和除法则不然,我们需要区分被减(减)数和减(除)数。class Solution { public int evalRPN(String[] tokens).原创 2020-06-19 09:59:18 · 95 阅读 · 0 评论
分享