Check if the given string is linear or not - GeeksforGeeks

11 May, 2021
Given string str, the task is to check whether the given string is linear or not. If it is linear then print “Yes” else print “No”.  
Let the string be “abcdefghij”. It can be broken as: “a” “bc” “def” “ghij” if the character a, b, c, and are equal then the given string is linear otherwise not. Therefore if the string is of the form “xxaxabcxabcdxabcdexab...” then it is called as the linear string.  
Examples:  
Input: str = “aapaxyayziabcde” Output: Yes Explanation: a ap axy ayzi abcde All the broken string have same character as the first character.Input: str = “bbobfycd” Output: No Explanation: b bo bfy cd Here b=b=b!=c  
Approach: To check if the given string is of the form “xxaxabcxabcdxabcdexab...” then we have to check if characters at index 0, 1, 3, 6, 10, ... are equals or not. If all the characters at the above indexes are equal then the given string is Linear String otherwise it is not.
Below is the implementation of the above approach: 
C++
Java
Python3
C#
Javascript
// C++ program for the above approach#include <bits/stdc++.h>using namespace std; // Function to check if the given// string is linear or notint is_linear(string s){    int tmp = 0;     char first = s[0];     // Iterate over string    for (int pos = 0; pos < s.length();        pos += tmp) {         // If character is not same as        // the first character then        // return false        if (s[pos] != first) {            return false;        }         // Increment the tmp        tmp++;    }     return true;} // Driver Codeint main(){    // Given String str    string str = "aapaxyayziabcde";     // Function Call    if (is_linear(str)) {        cout << "Yes" << endl;    }    else {        cout << "No" << endl;    }     return 0;}
// Java program for the above approachimport java.util.*;   class GFG{  // Function to check if the given// string is linear or notstatic boolean is_linear(String s){    int tmp = 0;    char first = s.charAt(0);      // Iterate over string    for(int pos = 0; pos < s.length();            pos += tmp)    {                 // If character is not same as        // the first character then        // return false        if (s.charAt(pos) != first)        {            return false;        }                 // Increment the tmp        tmp++;    }    return true;} // Driver codepublic static void main(String[] args){         // Given String str    String str = "aapaxyayziabcde";     // Function call    if (is_linear(str))    {        System.out.println("Yes");    }    else    {        System.out.println("No");    }}} // This code is contributed by offbeat
# Python3 program for the above approach # Function to check if the given# is linear or notdef is_linear(s):     tmp = 0    first = s[0]    pos = 0         # Iterate over string    while pos < len(s):         # If character is not same as        # the first character then        # return false        if (s[pos] != first):            return False                 # Increment the tmp        tmp += 1        pos += tmp             return True # Driver Codeif __name__ == '__main__':     # Given String str    str = "aapaxyayziabcde"     # Function call    if (is_linear(str)):        print("Yes")    else:        print("No") # This code is contributed by mohit kumar 29
// C# program for the above approachusing System;  class GFG{     // Function to check if the given// string is linear or notstatic bool is_linear(String s){    int tmp = 0;    char first = s[0];     // Iterate over string    for(int pos = 0; pos < s.Length;            pos += tmp)    {                 // If character is not same as        // the first character then        // return false        if (s[pos] != first)        {            return false;        }         // Increment the tmp        tmp++;    }    return true;} // Driver codepublic static void Main(String[] args){         // Given String str    String str = "aapaxyayziabcde";     // Function call    if (is_linear(str))    {        Console.Write("Yes");    }    else    {        Console.Write("No");    }}} // This code is contributed by grand_master
<script> // Javascript program for the above approach // Function to check if the given// string is linear or notfunction is_linear(s){    let tmp = 0;    let first = s[0];        // Iterate over string    for(let pos = 0; pos < s.length;            pos += tmp)    {                   // If character is not same as        // the first character then        // return false        if (s[pos] != first)        {            return false;        }                   // Increment the tmp        tmp++;    }    return true;}   // Driver Code     // Given String str    let str = "aapaxyayziabcde";       // Function call    if (is_linear(str))    {        document.write("Yes");    }    else    {        document.write("No");    } </script>
Yes
 
Time Complexity: O(log N) Auxiliary Space: O(1) 
mohit kumar 29
offbeat
grand_master
sanjoy_62
C-String-Question
school-programming
Greedy
Mathematical
Pattern Searching
Strings
Strings
Greedy
Mathematical
Pattern Searching
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Program for First Fit algorithm in Memory Management
Program for Best Fit algorithm in Memory Management
Optimal Page Replacement Algorithm
Max Flow Problem Introduction
Split the given array into K sub-arrays such that maximum sum of all sub arrays is minimum
Program for Fibonacci numbers
C++ Data Types
Set in C++ Standard Template Library (STL)
Program to find sum of elements in a given array
Modulo Operator (%) in C/C++ with Examples