0% found this document useful (0 votes)
3 views5 pages

Java String and List Reversal Techniques

sdsdsddddddddddddddddddddd

Uploaded by

Vedant Kapoor
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views5 pages

Java String and List Reversal Techniques

sdsdsddddddddddddddddddddd

Uploaded by

Vedant Kapoor
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Java Reverse Questions Cheat Sheet (Full)

1. Reverse a String
String reverseString(String s) {
return new StringBuilder(s).reverse().toString();
}

// Without built-in methods (two pointers)


String reverseStringManual(String s) {
char[] arr = [Link]();
int i = 0, j = [Link] - 1;
while (i < j) {
char temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;
i++; j--;
}
return new String(arr);
}

// Example:
[Link](reverseString("hello")); // olleh

2. Reverse Each Word (keep order)


String reverseEachWord(String s) {
String[] words = [Link](" ");
StringBuilder result = new StringBuilder();
for (int i = 0; i < [Link]; i++) {
[Link](new StringBuilder(words[i]).reverse());
if (i < [Link] - 1) [Link](" ");
}
return [Link]();
}

// Example:
[Link](reverseEachWord("i like java")); // i ekil avaj

3. Reverse Order of Words


String reverseOrder(String s) {
String[] words = [Link](" ");
StringBuilder result = new StringBuilder();
for (int i = [Link] - 1; i >= 0; i--) {
[Link](words[i]);
if (i > 0) [Link](" ");
}
return [Link]();
}

// Example:
[Link](reverseOrder("i like java")); // java like i

4. Reverse Words + Order


String reverseWordsAndOrder(String s) {
String[] words = [Link](" ");
StringBuilder result = new StringBuilder();
for (int i = [Link] - 1; i >= 0; i--) {
[Link](new StringBuilder(words[i]).reverse());
if (i > 0) [Link](" ");
}
return [Link]();
}

// Example:
[Link](reverseWordsAndOrder("i like java")); // avaj ekil i

5. Reverse Only Vowels


String reverseVowels(String s) {
char[] arr = [Link]();
int i = 0, j = [Link] - 1;
String vowels = "aeiouAEIOU";
while (i < j) {
while (i < j && ![Link](arr[i] + "")) i++;
while (i < j && ![Link](arr[j] + "")) j--;
char temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;
i++; j--;
}
return new String(arr);
}

// Example:
[Link](reverseVowels("hello")); // holle

6. Reverse Without Affecting Special Characters


String reverseButKeepSpecial(String s) {
char[] arr = [Link]();
int i = 0, j = [Link] - 1;
while (i < j) {
if (![Link](arr[i])) i++;
else if (![Link](arr[j])) j--;
else {
char temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;
i++; j--;
}
}
return new String(arr);
}

// Example:
[Link](reverseButKeepSpecial("a,b$c")); // c,b$a

7. Reverse a Number
int reverseNumber(int n) {
int rev = 0;
while (n != 0) {
int digit = n % 10;
rev = rev * 10 + digit;
n /= 10;
}
return rev;
}

// Example:
[Link](reverseNumber(12345)); // 54321
8. Reverse Linked List
class ListNode {
int val;
ListNode next;
ListNode(int val) { [Link] = val; }
}

ListNode reverseList(ListNode head) {


ListNode prev = null, curr = head;
while (curr != null) {
ListNode next = [Link];
[Link] = prev;
prev = curr;
curr = next;
}
return prev;
}

// Example:
// Input: 1 -> 2 -> 3
// Output: 3 -> 2 -> 1

9. Reverse Array in Groups of k


void reverseInGroups(int[] arr, int k) {
for (int i = 0; i < [Link]; i += k) {
int l = i, r = [Link](i + k - 1, [Link] - 1);
while (l < r) {
int temp = arr[l]; arr[l] = arr[r]; arr[r] = temp;
l++; r--;
}
}
}

// Example:
int[] arr = {1,2,3,4,5,6,7,8};
reverseInGroups(arr, 3);
// Output: [3,2,1,6,5,4,8,7]

10. Reverse Substring Between Indices


String reverseSubstring(String s, int l, int r) {
char[] arr = [Link]();
while (l < r) {
char temp = arr[l]; arr[l] = arr[r]; arr[r] = temp;
l++; r--;
}
return new String(arr);
}

// Example:
[Link](reverseSubstring("abcdefg", 2, 5)); // abfedcg

11. Reverse Every Alternate Word


String reverseAlternateWords(String s) {
String[] words = [Link](" ");
StringBuilder result = new StringBuilder();
for (int i = 0; i < [Link]; i++) {
if (i % 2 == 1) {
[Link](new StringBuilder(words[i]).reverse());
} else {
[Link](words[i]);
}
if (i < [Link] - 1) [Link](" ");
}
return [Link]();
}

// Example:
[Link](reverseAlternateWords("i love coding very much"));
// Output: i evol coding yrev much

12. Palindrome Check (using reverse)


boolean isPalindrome(String s) {
String clean = [Link]("[^a-zA-Z0-9]", "").toLowerCase();
String rev = new StringBuilder(clean).reverse().toString();
return [Link](rev);
}

// Example:
[Link](isPalindrome("A man, a plan, a canal: Panama")); // true

13. Reverse Linked List (Recursive)


ListNode reverseListRecursive(ListNode head) {
if (head == null || [Link] == null) return head;
ListNode rest = reverseListRecursive([Link]);
[Link] = head;
[Link] = null;
return rest;
}

// Example: Input 1->2->3 -> Output 3->2->1

14. Reverse Level Order in Binary Tree


class TreeNode {
int val; TreeNode left, right;
TreeNode(int val) { [Link] = val; }
}

List<List<Integer>> reverseLevelOrder(TreeNode root) {


List<List<Integer>> res = new ArrayList<>();
if (root == null) return res;
Queue<TreeNode> q = new LinkedList<>();
[Link](root);
while (![Link]()) {
int size = [Link]();
List<Integer> level = new ArrayList<>();
for (int i = 0; i < size; i++) {
TreeNode node = [Link]();
[Link]([Link]);
if ([Link] != null) [Link]([Link]);
if ([Link] != null) [Link]([Link]);
}
[Link](0, level); // add to front to reverse
}
return res;
}

// Example: Binary tree level order reversed

You might also like