Puneet Kapoor
Puneet Kapoor

Reputation: 31

Finding the number of possible appearances of a word in a string

I have two strings

s1 = "cAda"

s2 = "AbrAcadAbRa"

Need to find out the sequence in Second string for string one.

output = 2 which is (Acad, cadA)

Upvotes: 2

Views: 208

Answers (3)

Darshan Mehta
Darshan Mehta

Reputation: 30809

Here you go:

public static boolean containsWord(String str, String word){
    for(char c : word.toCharArray()){
        if(!str.toLowerCase().contains(String.valueOf(c).toLowerCase())){
            return false;
        }
    }
    return true;
}

Call the above method with two strings, e.g.:

String s1 = "cAda";
s1 = s1.chars().mapToObj(c -> String.valueOf((char) c)).distinct().collect(Collectors.joining()); //Remove duplicate characters
String s2 = "AbrAcadAbRa";
int length = s1.length();
for(int i=0 ; i< s2.length() - s1.length() ; i++){
    if(containsWord(s2.substring(i, i+length), s1)){
        System.out.println(s2.substring(i, i+length));
    }
}

If you want case sensitive comparison then, you can get rid of .toLowerCase() in containsWord method.

Upvotes: 0

halim
halim

Reputation: 211

input:

4
11
cAda
AbrAcadAbRa

output: 2

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

class GFG {
public static void main (String[] args) {
    //code
      Scanner in = new Scanner(System.in);
    int output = 0;
    int ip1 = Integer.parseInt(in.nextLine().trim());
    int ip2 = Integer.parseInt(in.nextLine().trim());
    String ip3 = in.nextLine().trim();
    String ip4 = in.nextLine().trim();
    output = appearanceCount(ip1,ip2,ip3,ip4);
    System.out.println(String.valueOf(output));
}

  public static int appearanceCount(int input1,int input2,String 
  input3,String input4)
{
//Write code here
int a= permute(input3,0,input3.length()-1,input4);
return a;
}
static int count=0;
public static int permute(String str, int l, int r,String mainstr)
{

    if (l == r){
    if(mainstr.contains(str)){
         count++;

    }
    }
    else
    {
        for (int i = l; i <= r; i++)
        {
            str = swap(str,l,i);
            permute(str, l+1, r,mainstr);
            str = swap(str,l,i);
        }
    }
    return count;
}
public static String swap(String a, int i, int j)
{
    char temp;
    char[] charArray = a.toCharArray();
    temp = charArray[i] ;
    charArray[i] = charArray[j];
    charArray[j] = temp;
    return String.valueOf(charArray);
}
 }

Upvotes: 1

Courage
Courage

Reputation: 792

It could also be this way

int findSequence(final String pat, final String str) {
String modPat = pat + pat;
int count = 0;
for (int i = 0; i < pat.length(); i++) {
  String substring = modPat.substring(i, i + pat.length());
  int indexOf = str.toLowerCase().indexOf(substring.toLowerCase());
  if (indexOf != -1) {
    System.out.println(str.substring(indexOf, indexOf + pat.length()));
    count++;
  }
}
return count;
}

Upvotes: 0

Related Questions