Dobili ste niz 'str', naloga je preveriti, ali so obrnjeni vsi možni podnizi 'str' prisotni v 'str' ali ne.
Primeri:
niz int
Input : str = 'ab' Output: 'NO' // all substrings are 'a''b''ab' but reverse // of 'ab' is not present in str Input : str = 'aba' Output: 'YES' Input : str = 'abab' Output: 'NO' // All substrings are 'a' 'b' 'a' 'b' 'ab' // 'ba' 'ab' 'aba' 'bab' 'abab' but reverse of // 'abab' is not present in strRecommended Practice Popolna reverzibilna struna Poskusite!
A preprosta rešitev kajti ta težava je ustvariti vse možne podnize 'st' in preveriti, ali njihova obratna stran linearno obstaja v 'str'.
An učinkovita rešitev kajti ta problem temelji na dejstvu, da bo obrat vseh podnizov 'str' obstajal v 'str', če in samo če je celoten niz 'str' palindrom. To dejstvo lahko utemeljimo tako, da upoštevamo, da bo celoten niz obrnjen le, če je palindrom. In če je niz palindrom, potem obstajajo vse nasprotne strani vseh podnizov.
Spodaj je izvedba zgornje ideje.
C++// C++ program to check if a string is perfect // reversible or nor #include using namespace std; // This function basically checks if string is // palindrome or not bool isReversible(string str) { int i = 0 j = str.length()-1; // iterate from left and right while (i < j) { if (str[i] != str[j]) return false; i++; j--; } return true; } // Driver program to run the case int main() { string str='aba'; if (isReversible(str)) cout << 'YES'; else cout << 'NO'; return 0; }
Java // Java program to check // if a string is perfect // reversible or nor import java.io.*; class GFG { // This function basically // checks if string is // palindrome or not static boolean isReversible(String str) { int i = 0 j = str.length() - 1; // iterate from // left and right while (i < j) { if (str.charAt(i) != str.charAt(j)) return false; i++; j--; } return true; } // Driver Code public static void main (String[] args) { String str = 'aba'; if (isReversible(str)) System.out.print('YES'); else System.out.print( 'NO'); } } // This code is contributed // by anuj_67.
Python3 # Python3 program to check if # a string is perfect reversible or not # This function basically checks # if string is palindrome or not def isReversible(str): i = 0; j = len(str) - 1; # iterate from left and right while (i < j): if (str[i] != str[j]): return False; i += 1; j -= 1; return True; # Driver Code str = 'aba'; if (isReversible(str)): print('YES'); else: print('NO'); # This code is contributed by Princi Singh
C# // C# program to check if a string // is perfect reversible or nor using System; class GFG { // This function basically checks if // string is palindrome or not public static bool isReversible(string str) { int i = 0 j = str.Length - 1; // iterate from left and right while (i < j) { if (str[i] != str[j]) { return false; } i++; j--; } return true; } // Driver Code public static void Main(string[] args) { string str = 'aba'; if (isReversible(str)) { Console.Write('YES'); } else { Console.Write('NO'); } } } // This code is contributed // by anuj_67
JavaScript <script> // JavaScript program to check if a // string is perfect reversible or not // This function basically checks // if string is palindrome or not function isReversible(str) { var i = 0 j = str.length - 1; // Iterate from left and right while (i < j) { if (str[i] != str[j]) return false; i++; j--; } return true; } // Driver Code var str = 'aba'; if (isReversible(str)) document.write('YES'); else document.write('NO'); // This code is contributed by rdtank </script>
Izhod
YES
Časovna zahtevnost: O(n) kjer je n dolžina niza.
Pomožni prostor: O(1)
Druga metoda za iskanje niza je popolna reverzibilna ali ne:-
Prav tako lahko preverite, ali je niz popolnoma reverzibilen ali ne, tako da preverite, ali je niz palindromičen ali ne. To dejstvo lahko utemeljimo tako, da upoštevamo, da bo celoten niz obrnjen le, če je palindrom. In če je niz palindrom, potem obstajajo vse nasprotne strani vseh podnizov.
Spodaj je metoda za iskanje palindroma niza:-
primeri programov pythonC++
// C++ program to check if a string is perfect // reversible or nor #include using namespace std; // This function basically checks if string is // palindrome or not bool isReversible(string s) { // Stores the reverse of the // string S string p = s; // Reverse the string P reverse(p.begin() p.end()); // If S is equal to P if (s == p) { // Return 'Yes' return true; } // Otherwise return false; } // Driver program to run the case int main() { string str='aba'; if (isReversible(str)) cout << 'YES'; else cout << 'NO'; return 0; } //code by ksam24000
C# //c# code using System; namespace ConsoleApp1 { class GFG { // Driver program to run the case static void Main(string[] args) { string str = 'aba'; if (IsReversible(str)) Console.WriteLine('YES'); else Console.WriteLine('NO'); } // This function basically checks if string is // palindrome or not static bool IsReversible(string s) { // Stores the reverse of the // string S string p = s; char[] arr = p.ToCharArray(); // Reverse the string P Array.Reverse(arr); p = new string(arr); return s == p; } } } // code by ksam24000
Java // Java program to check if a string is perfect // reversible or not import java.util.*; public class Main { // This function basically checks if string is // palindrome or not static boolean isReversible(String s) { // Stores the reverse of the string s String p = new StringBuilder(s).reverse().toString(); // If s is equal to p if (s.equals(p)) { // Return 'Yes' return true; } // Otherwise return false; } // Driver program to run the case public static void main(String[] args) { String str = 'aba'; if (isReversible(str)) System.out.println('YES'); else System.out.println('NO'); } }
Python3 def isReversible(s): # Stores the reverse of the string s p = s[::-1] # If s is equal to p if s == p: # Return True return True # Otherwise return False # Driver program to run the case if __name__ == '__main__': str = 'aba' if isReversible(str): print('YES') else: print('NO') # This code is contributed by divyansh2212
JavaScript // JavaScript program to check if a string is perfect // reversible or not // This function basically checks if string is // palindrome or not function isReversible(s) { // Stores the reverse of the // string S let p = s.split('').reverse().join(''); // If S is equal to P if (s == p) { // Return 'Yes' return true; } // Otherwise return false; } // Driver program to run the case let str = 'aba'; if (isReversible(str)) console.log('YES'); else console.log('NO');
Izhod
YES
Ustvari kviz