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);
}