String Questions
- How to find the Longest Substring in String
- Swapping Letters in 2 Words
- Print String in Reverse Order
- Print Left Right Angle Triangle
- Inverted Right Triangle
- Print Right Angle Triangle
- Print Pyramid
- Sum of Pairs in Array of Numbers
- Check 2nd List has all elements in 1st List
- How to find String is anagram
- Check Palindrome
- Reverse of String without for loop and array
- Check Palindrome with recursion
1.How to find the Longest Substring in String
Input
String strSample = "ABCAAABCD"
Output
ABCD
public static void main(String[] args) { String Test = "ABCAAABCD"; String dummy = ""; String[] arrTest = Test.split(""); List<String> seenChars = new ArrayList<String>(); List<String> subStrings = new ArrayList<String>(); int j = 0; for (int i = 1; i < arrTest.length; i++) { if(seenChars.contains(arrTest[i])) { subStrings.add(dummy); dummy = ""; seenChars.clear(); } seenChars.add(arrTest[i]); dummy += arrTest[i]; j = i + 1; if(j == arrTest.length) subStrings.add(dummy); } int highestNo = 0; int lastHighest = 0; int currHighestNo = 0; int highestPOS = 0; for(int k = 0; k < subStrings.size() ; k++) { currHighestNo = subStrings.get(k).length(); if(currHighestNo > lastHighest) { highestNo = currHighestNo; highestPOS = k; } lastHighest = currHighestNo; } System.out.println(subStrings.get(highestPOS)); }
Method 2
public static void main(String args[]) { String Test = "ABCDEAAABCDA"; String dummy = ""; String[] arrTest = Test.split(""); String longestSubString = ""; List<String> seenChars = new ArrayList<String>(); List<String> subStrings = new ArrayList<String>(); for (String strTest : arrTest) { if (seenChars.contains(strTest)) { if (dummy.length() > longestSubString.length()) longestSubString = dummy; subStrings.add(dummy); dummy = ""; seenChars.clear(); } seenChars.add(strTest); dummy += strTest; } if (dummy.length() > longestSubString.length()) { longestSubString = dummy; subStrings.add(dummy); } System.out.println("Longest subString is: " + "'" + longestSubString + "'" + " and length is: " + longestSubString.length()); }
2.Swapping Letters in 2 Words
Input
MUGIL XXX
Output
MXUXGXIL
public class Array1 { static List arrNewList1 = new ArrayList(); public static void main(String[] args) { String text1 = "MUGIL"; String text2 = "XXX"; String[] arrList1 = text1.split(""); String[] arrList2 = text2.split(""); if(arrList2.length > arrList1.length) swapArrays(arrList2, arrList1); else swapArrays(arrList1, arrList2); StringBuilder strBr = new StringBuilder(); for (int i = 0; i < arrNewList1.size(); i++) strBr.append(arrNewList1.get(i)); System.out.println(strBr); } public static void swapArrays(String[] pBigList, String[] pSmallList) { for (int i = 0; i < pBigList.length; i++) { arrNewList1.add(pBigList[i]); if(i < pSmallList.length) arrNewList1.add(pSmallList[i]); } } }
Note
. . String Text1 = "M,U,G,I,L"; String Text2 = "MUGIL"; System.out.println(Text1.split(",").length); System.out.println(Text2.split("").length); . .
Output
5 6
you may be puzzled why first prints 5 and second prints 6.Thats because the empty space between “M is taken as 1 element in Text2
3.Print String in Reverse Order
Input
asanam
Output
asanam
package com.mugil.test; public class ReverseString { public static void main(String[] args) { String strName = "manasa"; //char[] arrNames = strName.toCharArray(); String[] arrNames = strName.split(""); for (int i = arrNames.length - 1; i >= 0; i--) { System.out.print(arrNames[i]); } } }
4.Print Left Right Angle Triangle
Input
Total number of Rows - 5
Output
* ** *** **** *****
package com.mugil.test; public class Patterns2 { public static void main(String[] args) { int rows = 5; for (int i = 1; i <= rows; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(" "); } } }
5.Inverted Right Triangle
Input
Total number of Rows - 5
Output
***** **** *** ** *
. int rows = 5; for (int i = rows; i >= 0; i--) { for (int j = 1; j <= i; j++) System.out.print("*"); System.out.println(" "); } .
6.Print Right Angle Triangle
Input
Total number of Rows - 5
Output
* ** *** **** *****
int n = 5; int j = 0; int k = 0; for (int i = 0; i < n; i++) { for (j = n - i; j > 1; j--) System.out.print(" "); for (j = 0; j <= i; j++) System.out.print("*"); System.out.println(); }
7.Print Pyramid
Input
Total number of Rows - 5
Output
* * * * * * * * * * * * * * *
int n = 5; int j = 0; int k = 0; for (int i = 0; i < n; i++) { for (j = n - i; j > 1; j--) System.out.print(" "); for (j = 0; j <= i; j++) System.out.print("* "); System.out.println(); }
The only Difference between Right Angle Triangle and Pyramid is Space in *
8.Sum of Number Pairs in Array
Input
Array of Numbers - {0,1,2,2,3,4} Sum - 4
Output
(0,4) (1,3) (2,2)
. Integer[] arrNumbers = { 0, 1, 2, 2, 3, 4, 5}; int sum = 4; for (int i = 0; i < arrNumbers.length; i++) { for (int j = i + 1; j < arrNumbers.length; j++) { if (arrNumbers[i] + arrNumbers[j] == sum) { System.out.println("(" + arrNumbers[i] + "," + arrNumbers[j] + ")"); } } } .
9.Check 2nd List has all elements in 1st List
Input
2 List of Elements {1,2,3,4}{2,3} {1,2,3,4}{2,5} {2,3}{2,5,6} {2,3}{2,3,9}
Output
{1,2,3,4}{2,3} -> true {1,2,3,4}{2,5} -> false {2,3}{2,5,6} -> false {2,3}{2,3,9} -> false
public boolean checkEquals() { Integer orig[] = {1,2,3,4}; Integer act[] = {2,3}; List origList = new ArrayList(Arrays.asList(orig)); List actList = Arrays.asList(act); origList.retainAll(actList); System.out.println(origList); if(actList.size()==origList.size()) return true; else return false; }
10.How to find String is anagram?
Output
Keep and Peek are anagrams silent and listen are anagrams MotherInLaw and HitlerWoman are anagrams
public class AnagramString { static void isAnagram(String str1, String str2) { String s1 = str1.replaceAll("\\s", ""); String s2 = str2.replaceAll("\\s", ""); boolean status = true; if (s1.length() != s2.length()) status = false; else { char[] ArrayS1 = s1.toLowerCase().toCharArray(); char[] ArrayS2 = s2.toLowerCase().toCharArray(); Arrays.sort(ArrayS1); Arrays.sort(ArrayS2); status = Arrays.equals(ArrayS1, ArrayS2); } if (status) System.out.println(s1 + " and " + s2 + " are anagrams"); else System.out.println(s1 + " and " + s2 + " are not anagrams"); } public static void main(String[] args) { isAnagram("Keep", "Peek"); isAnagram("silent", "listen"); isAnagram("Mother In Law", "Hitler Woman"); } }
11.Check Palindrome
Input
malayalam
Output
Entered string is a palindrome
public static void main(String args[]) { String original, reverse = ""; original = "madam"; int length = original.length(); for ( int i = length - 1; i >= 0; i-- ) reverse = reverse + original.charAt(i); if (original.equals(reverse)) System.out.println("Entered string is a palindrome."); else System.out.println("Entered string is not a palindrome."); }
12.Reverse of String without for loop and array
Input
mugil
Output
ligum
static String reverseMe(String s) { if(s.length() <= 1) return s; return s.charAt(s.length() - 1) + reverseMe(s.substring(0,s.length()-1)); }
13.Check palindrome using recursion
Input
malayalam
Output
palindrome
Call the above reverse function and check with string equals method
public static boolean isPalindrome(String input) { if (input == null) return false; String reversed = reverse(input); return input.equals(reversed); } public static String reverse(String str) { if (str == null) return null; if (str.length() <= 1) return str; return reverse(str.substring(1)) + str.charAt(0); }