📜  双音字符串

📅  最后修改于: 2021-09-06 07:31:40             🧑  作者: Mango

给定一个字符串str ,任务是检查该字符串是否为双音字符串。如果字符串str是双音字符串,则打印“YES”,否则打印“NO”

例子:

方法:
为了解决这个问题,我们只需要遍历字符串并检查字符串的字符的ASCII值以下任何模式:

  • 严格增加。
  • 严格递减。
  • 严格递增后严格递减。

请按照以下步骤解决问题:

  1. 开始遍历字符串,不断检查下一个字符的ASCII值是否大于当前字符的ASCII值。
  2. 如果在任何时候,下一个字符的 ASCII 值不大于当前字符的 ASCII 值,则中断循环。
  3. 再次从上面的中断索引开始遍历,检查下一个字符的ASCII值是否小于当前字符的ASCII值。
  4. 如果在任何时候到达数组末尾之前下一个字符的 ASCII 值不小于当前字符的 ASCII 值,则打印“NO”并中断循环。
  5. 如果成功到达数组末尾,则打印“YES”

下面是上述方法的实现:

C++
// C++ program for the above approach
 
#include 
using namespace std;
 
// Function to check if the given
// string is bitonic
int checkBitonic(string s)
{
    int i, j;
 
    // Check for increasing sequence
    for (i = 1; i < s.size(); i++) {
        if (s[i] > s[i - 1])
            continue;
 
        if (s[i] <= s[i - 1])
            break;
    }
 
    // If end of string has been reached
    if (i == s.size() - 1)
        return 1;
 
    // Check for decreasing sequence
    for (j = i + 1; j < s.size();
         j++) {
        if (s[j] < s[j - 1])
            continue;
 
        if (s[j] >= s[j - 1])
            break;
    }
 
    i = j;
 
    // If the end of string hasn't
    // been reached
    if (i != s.size())
        return 0;
 
    // Return true if bitonic
    return 1;
}
 
// Driver Code
int main()
{
    // Given string
    string s = "abcdfgcba";
 
    // Function Call
    (checkBitonic(s) == 1)
        ? cout << "YES"
        : cout << "NO";
 
    return 0;
}


Java
// Java program for the above approach
import java.util.*;
 
class GFG{
 
// Function to check if the given
// String is bitonic
static int checkBitonic(char []s)
{
    int i, j;
 
    // Check for increasing sequence
    for(i = 1; i < s.length; i++)
    {
        if (s[i] > s[i - 1])
            continue;
 
        if (s[i] <= s[i - 1])
            break;
    }
 
    // If end of String has been reached
    if (i == s.length - 1)
        return 1;
 
    // Check for decreasing sequence
    for(j = i + 1; j < s.length; j++)
    {
        if (s[j] < s[j - 1])
            continue;
 
        if (s[j] >= s[j - 1])
            break;
    }
    i = j;
 
    // If the end of String hasn't
    // been reached
    if (i != s.length)
        return 0;
 
    // Return true if bitonic
    return 1;
}
 
// Driver Code
public static void main(String[] args)
{
 
    // Given String
    String s = "abcdfgcba";
 
    // Function Call
    System.out.print((checkBitonic(
        s.toCharArray()) == 1) ? "YES" : "NO");
}
}
 
// This code is contributed by PrinciRaj1992


Python3
# Python3 program for the above approach
 
# Function to check if the given
# string is bitonic
def checkBitonic(s):
     
    i = 0
    j = 0
 
    # Check for increasing sequence
    for i in range(1, len(s)):
        if (s[i] > s[i - 1]):
            continue;
 
        if (s[i] <= s[i - 1]):
            break;
     
    # If end of string has been reached
    if (i == (len(s) - 1)):
        return True;
     
    # Check for decreasing sequence
    for j in range(i + 1, len(s)):
        if (s[j] < s[j - 1]):
            continue;
             
        if (s[j] >= s[j - 1]):
            break;
    i = j;
 
    # If the end of string hasn't
    # been reached
    if (i != len(s) - 1):
        return False;
 
    # Return true if bitonic
    return True;
 
# Driver code
 
# Given string
s = "abcdfgcba"
 
# Function Call
if(checkBitonic(s)):
    print("YES")
else:
    print("NO")
     
# This code is contributed by grand_master


C#
// C# program for the above approach
using System;
 
class GFG{
 
// Function to check if the given
// String is bitonic
static int checkBitonic(char []s)
{
    int i, j;
 
    // Check for increasing sequence
    for(i = 1; i < s.Length; i++)
    {
        if (s[i] > s[i - 1])
            continue;
 
        if (s[i] <= s[i - 1])
            break;
    }
 
    // If end of String has been reached
    if (i == s.Length - 1)
        return 1;
 
    // Check for decreasing sequence
    for(j = i + 1; j < s.Length; j++)
    {
        if (s[j] < s[j - 1])
            continue;
 
        if (s[j] >= s[j - 1])
            break;
    }
    i = j;
 
    // If the end of String hasn't
    // been reached
    if (i != s.Length)
        return 0;
 
    // Return true if bitonic
    return 1;
}
 
// Driver Code
public static void Main(String[] args)
{
 
    // Given String
    String s = "abcdfgcba";
 
    // Function call
    Console.Write((checkBitonic(
        s.ToCharArray()) == 1) ? "YES" : "NO");
}
}
 
// This code is contributed by PrinciRaj1992


Javascript


输出:
YES

时间复杂度: O(N)
辅助空间: O(1)

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live