Strings
Strings
Reverse String (LeetCode 344)
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;
left++; right--;
}
}
}- Dry run (s = [h,e,l,l,o]):
- swap 0↔4 → [o,e,l,l,h]
- swap 1↔3 → [o,l,l,e,h]
- left=2,right=2 → stop → [o,l,l,e,h]
Length of Last Word (LeetCode 58)
class Solution {
public int lengthOfLastWord(String s) {
String[] words = s.trim().split(" ");
return words[words.length - 1].length();
}
}- Dry run ("Hello World "):
- trim → "Hello World"
- split → ["Hello","World"] → last="World" → len=5
Roman to Integer (LeetCode 13)
class Solution {
public int romanToInt(String s) {
int sum = 0;
int num = 0;
for (int i = s.length() - 1; i >= 0; i--) {
switch (s.charAt(i)) {
case 'I': num = 1; break;
case 'V': num = 5; break;
case 'X': num = 10; break;
case 'L': num = 50; break;
case 'C': num = 100; break;
case 'D': num = 500; break;
case 'M': num = 1000; break;
}
if (num * 4 < sum) sum -= num; else sum += num;
}
return sum;
}
}- Dry run ("MCMXCIV") from right:
- V(5) → sum=5
- I(1): 1*4<5 → sum=4
- C(100): 100*4<4? no → sum=104
- X(10): 10*4<104 → sum=94
- M(1000): add → 1094
- C(100): subtract → 994
- M(1000): add → 1994
Anagram (LeetCode 242)
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) return false;
int[] freq = new int[26];
for (int i = 0; i < s.length(); i++) {
freq[s.charAt(i) - 'a']++;
freq[t.charAt(i) - 'a']--;
}
for (int count : freq) if (count != 0) return false;
return true;
}
}- Dry run (s="ab", t="ba"):
- i=0: freq[a]++ →1; freq[b]-- →-1
- i=1: freq[b]++ →0; freq[a]-- →0
- All zeros → true
Frequency of Character (uppercase)
class Main {
public static void main(String[] args) {
String s = "SURYAS";
int[] freq = new int[26];
for (int i = 0; i < s.length(); i++) {
freq[s.charAt(i) - 'A']++;
}
for (int i = 0; i < freq.length; i++) {
if (freq[i] > 0) {
System.out.println((char)(i + 'A') + " " + freq[i]);
}
}
}
}- Dry run:
- S→ index 18 → freq[18]=1
- U→ 20 → 1
- R→ 17 → 1
- Y→ 24 → 1
- A→ 0 → 1
- S→ 18 → 2
- Output in alphabetical order: A 1, R 1, S 2, U 1, Y 1