Program to check if one string is contained cyclic in the other one

write a program to compute if one string is a rotation of another in c
check if it is possible to transform one string to another
string rotation program in c
how do you check if a given string is a palindrome?
check if a string can be obtained by rotating another string 2 places
two strings s1 and s2 were given check if s1 is palindrome of s2
string rotation in python
check if string is rotated by two places leetcode

doing some exrecises for upcoming test. a bit stuck in this one.

"Write a program that asks the user for two strings and checks and prints a message if the second string is contained cyclic in the first string. The cyclic containment means that either the second string appears normally within the first string or the second string appears so that its prefix appears at the end of the first string and the continuation appears at the beginning of the first string".

You can assume that the strings contain only lowercase letters. String functions are only allowed are : strlen, strcpy, strcmp, strcat

for example:

String A: itisaniceday String B: sanic

Is a regular occurrence

String A: itisaniceday String B: dayit

It's a cyclic occurence.

what I did so far:

#include <iostream>
#include <string.h>
using namespace std;
#define Max 128

int isCyclic(char* str1, char* str2);

int main()
{
    char* str1 = new char[Max];
    char* str2 = new char[Max];

    cout << "Please enter two strings:" << endl;

    cin >> str1 >> str2;

    cout << isCyclic(str1, str2) << endl;


    delete[] str1;
    delete[] str2;
}

int isCyclic(char* str1, char* str2)
{
    int s1 = strlen(str1);
    int s2 = strlen(str2);

    if (s1!=s2) // if string size is diffrent - they are not contained cyclic
    {
        return 0;
    }


}

You will need two loops, first one over string 1 which is our starting point in string 1 for comparison and second one over string 2 which will be matched to string 1 in a cyclic way. If we reach the end of string 1 and still some characters are left in string 2 then cycle through string 1 starting from index 0.

#include <stdio.h>
#include <iostream>
#include <string.h>

// Should be avoided in general. Use scope resolution instead.
using namespace std;

char* isCyclic(char* s1, char* s2){
    int s1_size = strlen(s1);
    int s2_size = strlen(s2);

    // s1 must contain s2
    if(s2_size > s1_size)
        return "No Occurence";


    for(int i = 0; i < s1_size; i++){
        int current = i;
        // Boolean to track if we are currently cycling through s1
        bool inCycle = false;
        int j = 0;
        for(; j < s2_size; j++, current++){
            // character wise comparision
            if(s2[j] != s1[current])
                break;
            if(! inCycle){
                // start from first. Note that we are setting current = -1.
                // as we will be incrementing it in the for loop.
                if(current == s1_size - 1 && j < s2_size - 1){
                    current = -1;
                    inCycle = true;
                }
            }
        }

        if(j == s2_size){
            if(inCycle)
                return "cyclic";
            else
                return "regular";
        }
    }

    return "No Occurence";
}


int main()
{
    printf("Hello World\n");

    char* s1 = "itisaniceday";
    char* s2 = "dayitis";

    cout<<"Occurence Type: "<<isCyclic(s1, s2)<<endl;

    return 0;
}

A Program to check if strings are rotations of each other or not , It contains well written, well thought and well explained computer science and A Program to check if strings are rotations of each other or not 1. Create a temp string and store concatenation of str1 to str1 in temp. temp = str1.str1 2. If str2 is� Simple Approach: The idea is to run a loop from start to end and for every index in the given string check whether the sub-string can be formed from that index. This can be done by running a nested loop traversing the given string and in that loop run another loop checking for sub-string from every index.

Here is a solution for the second part of the problem (cyclic part). I simply go through all of the characters in the first string and checked if they are the beginning of a cyclic appearance of the second string. To check that I used % (the modolu operation) if you don't know what it dose then you really need to learn it now. Also I used bool instead of int because numbers are confusing (and cursed).

    #include <iostream>
    #include <string.h>
    using namespace std;
    #define Max 128

    bool isCyclic(char* str1, char* str2);
    bool isCyclic(char* str1, char* str2,int start);

    int main()
    {
        char* str1 = new char[Max];
        char* str2 = new char[Max];
        cout << "Please enter two strings:" << endl;
        cin >> str1 >> str2;
        cout << isCyclic(str1, str2) << endl;
        delete[] str1;
        delete[] str2;
    }
    bool isCyclic(char* str1, char* str2)   {
            for(int i = 0; i < strlen(str1); i++)   {
                    if(str1[i] == str2[0] && isCyclic(str1,str2,i)) {
                            return true;
                    }
            }
            return false;
    }

    bool isCyclic(char* str1, char* str2,int start)
    {
            int containingStrLen = strlen(str1);
            for(int i = 0; i < strlen(str2); i++)   {
                    if(str1[(start + i)%containingStrLen] != str2[i])       {
                            return false;
                    }
            }
            return true;
    }

There are some things missing in this code still:

1) The first part of the problem (it can easily be derived from this code).

2) Some size validation such as making sure that str1 is bigger then str2 before using is cyclic. And that the strings are smaller then Max (I assume).

3) A proper result print.

Good luck in your exam :)

Check if one string can be converted to another, Given two strings str and str1, the task is to check whether one string can be Here, due to the presence of a cycle, a specific order cannot be found. For finding cycle with the edges, these edges are mapped one by one to a parent and are� Java Program to check whether one string is a rotation of another with method signature and examples of concat, compare, touppercase, tolowercase, trim, length, equals, split, string charat in java etc.

There's a simple trick : if you duplicate the string's prefix at its own end, the problem becomes a straight substring search as a cyclic match would be recomposed at the end. It also handles the corner case where the substring loops back on itself, such as "looploop" inside of "loop".

So here's how you'd do it in broken C-ish dialect:

bool containsCyclic(char const *string, char const *substring) {
    std::size_t const stringLen = std::strlen(string);
    std::size_t const substringLen = std::strlen(substring);

    // Too long a substring wouldn't fit in the string
    if(substringLen > 2 * stringLen)
        return false;

    // Concatenate `string` with its own substring-long prefix
    char *const loopedString = new char[stringLen + substringLen + 1];
    std::strcpy(loopedString, string);

    { // Partial reimplementation of std::strncpy(loopedString, string, substringLen)
        char const *src = string;
        char *dest = loopedString +  stringLen;
        for(std::size_t count = 0; count < substringLen; ++count)
            *dest++ = *src++;

        *dest = '\0';
    }

    { // Partial and naïve reimplementation of std::strstr(loopedString, substring)
        for(char const *start = loopedString; start < loopedString + stringLen; ++start) {
            // Check if substring is present at this offset
            char const *s1 = start;
            char const *s2 = substring;

            while(*s2 != '\0' && *s1 == *s2)
                ++s1, ++s2;

            if(*s2 == '\0') {
                // We found a complete match of substring inside loopedString
                delete[] loopedString;
                return true;
            }
        }
    }

    // No match found
    delete[] loopedString;
    return false;
}

And just for kicks, here it is in C++:

bool containsCyclicCpp(std::string const &string, std::string const &substring) {
    std::string const loopedString = string + string.substr(0, substring.size());
    return loopedString.find(substring) != std::string::npos;
}

See it live on Coliru (with tests!)

23) Java Program to check whether one String is a rotation of another, Java Program to check whether one string is a rotation of another with return false;; }; String st3 = st1 + st1;; if (st3.contains(st2)); return true;; else; return false;; }� Check if all rows of a matrix are circular rotations of each other; Meta Strings (Check if two strings can become same after a swap in one string) Check whether all the rotations of a given number is greater than or equal to the given number or not; Check whether Strings are k distance apart or not; Check if two strings are permutation of each

Official Gazette of the United States Patent and Trademark Office: , tion, such that at the completion of the second polynomial division, a residue logically combining each successive one of the quotient bits generated by the judging by ECC check whether the read data string contains an error; if the second conversion means for converting said serial program data into a cyclic code� I'll explain it with my program [code] #include <stdio.h> int main() { char str[] = "String"; char sub[] = "ring"; int i, j=0, k; for(i=0; str[i]; i++) { if(str[i

Encyclopedia of Algorithms, The choice of the distance function ı is another source of diversity in the problem statement. A variant requires that there is a one-to-one mapping between f(P) andI,and If some translation gets |P| votes, then a subset I such f(P) = I is found. b, and c among them such that a + b + c = 0; finding a sub- quadratic algorithm for� Given two strings s1 and s2, write a function that says whether the two strings are anagram or not s2 is said to be a anagram if it contains same characters that of s1, but order can be different Example 1. INPUT s1 = “abcd” s2 = “cdbe” OUTPUT Given two strings are not anagram to each other as the string s1 does not contain all

Language and Automata Theory and Applications: 4th International , The generated logic program models the pushdown timed automaton as a time and other arguments will be ignored to check if the driver/6predicate is cyclical. Thus, one must ensure that if a cycle P is part of an accepting string, then the be found in http://www.utdallas.edu/~nxs048000/co-lp.yap Given this program� Java examples to check if an Array (String or Primitive type) contains a certain values, updated with Java 8 stream APIs. 1. String Arrays. 1.1 Check if a String Array contains a certain value “A”.

Comments
  • if (s1!=s2) doesn't do what you think it does in multiple manners. You are comparing two pointers, not string s. Use the std::string class instead of raw char* c-style pointers.
  • can't, didnt study this way @πάνταῥεῖ
  • That's the idiomatic way to do in c++. Using std::string would make your chances to get a job in industry way better. So why aren't you learning c++?
  • @πάνταῥεῖ I understand but that's how we study in uni
  • Well, to compare raw c-style strings use strcmp(). As mentioned you just compare two pointer values, which won't do what you want to achieve,