文字列がプログラミングと対称であるかどうかを確認する方法

文字列の両方の半分が同じである場合、文字列は対称であると言われます。この記事では、特定の文字列が対称であるかどうかを判断するためのアルゴリズムを学習します。また、C ++、Python、C、JavaScriptなどの最も一般的なプログラミング言語でこのアルゴリズムを実装する方法についても学習します。

問題文

文字列が与えられます。指定された文字列が対称であるかどうかを判断する必要があります。

例1 :str = "abab"とします。

文字列の両方の半分が同じであるため、与えられたものは対称的です。

したがって、出力は「はい、指定された文字列は対称です」です。

例2 :str = "madam"とします。

文字列の長さが奇数の場合、文字列の中央の文字は無視されます。したがって、前半は「ma」、後半は「am」となります。 2つの半分は同じではありません。

したがって、出力は「いいえ、指定された文字列は対称ではありません」です。

例3 :str = "madma"とします。

前半=「ま」、後半=「ま」。文字列の両方の半分は同じです。

したがって、出力は「はい、指定された文字列は対称です」です。

与えられた文字列が対称であるかどうかを判断するアルゴリズム

以下のアプローチに従うことで、特定の文字列が対称であるかどうかを判断できます。

  1. 文字列の長さを見つけます。
  2. 文字列のmidIndexを見つけます。
    • 文字列の長さが偶数の場合、 midIndex = length / 2です。
    • 文字列の長さが奇数の場合、 midIndex =(length / 2)+1 。この場合、文字列の中央の文字は比較のために無視されます。
  3. 2つのポインター変数pointer1pointer2を初期化します。ポインタ1は文字列の最初の文字(0)のインデックスを格納し、ポインタ2は文字列の中央の文字(midIndex)のインデックスを格納します。
  4. 次に、 whileループを使用して、文字列の両方の半分の対応する文字を比較ます。 pointer1 <midIndexおよびpointer2 <lengthOfStringになるまでwhileループを実行します。
  5. インデックスpointer1pointer2の対応する文字を比較します。
  6. 対応する文字が類似していないことが判明した場合は、 falseを返します。また、対応する文字が類似していない場合は、 trueを返します
  7. また、各反復でpointer1pointer2の値を必ずインクリメントしてください。

特定の文字列が対称であるかどうかを判断するC ++プログラム

以下は、特定の文字列が対称であるかどうかを判断するためのC ++プログラムです。

 // C++ program to check whether the string is symmetrical or not
#include <iostream>
using namespace std;
// Function to check whether the string is symmetrical or not
bool isSymmetrical(string str)
{
int midIndex;
int length = str.length();
// If the length of string is even
if (length % 2 == 0)
{
midIndex = length/2;
}
// If the length of string is odd
else
{
midIndex = length/2 + 1;
}
int pointer1 = 0;
int pointer2 = midIndex;
while(pointer1<midIndex && pointer2<length)
{
if(str[pointer1] == str[pointer2])
{
pointer1 += 1;
pointer2 += 1;
}
else
{
return false;
}
}
return true;
}
// Driver Code
int main()
{
// Test case: 1
string str1 = "abab";
cout << "String 1: " << str1 << endl;
if (isSymmetrical(str1))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 2
string str2 = "madam";
cout << "String 2: " << str2 << endl;
if (isSymmetrical(str2))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 3
string str3 = "madma";
cout << "String 3: " << str3 << endl;
if (isSymmetrical(str3))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 4
string str4 = "civic";
cout << "String 4: " << str4 << endl;
if (isSymmetrical(str4))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
// Test case: 5
string str5 = "khokho";
cout << "String 5: " << str5 << endl;
if (isSymmetrical(str5))
{
cout << "Yes, the given string is symmetrical" << endl;
}
else
{
cout << "No, the given string is not symmetrical" << endl;
}
return 0;
}

出力:

 String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical

関連: C ++、Python、JavaScriptで文字列を逆にする方法

与えられた文字列が対称であるかどうかを判断するPythonプログラム

以下は、特定の文字列が対称であるかどうかを判断するPythonプログラムです。

 # Python program to check whether the string is symmetrical or not
# Function to check whether the string is symmetrical or not
def isSymmetrical(str):
midIndex = 0
length = len(str)
if length%2 == 0:
midIndex = length//2
else:
midIndex = length//2 + 1
pointer1 = 0
pointer2 = midIndex
while pointer1<midIndex and pointer2<length:
if (str[pointer1] == str[pointer2]):
pointer1 += 1
pointer2 += 1
else:
return False
return True

# Test case: 1
str1 = "abab"
print("String 1:", str1)
if (isSymmetrical(str1)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 2
str2 = "madam"
print("String 2:", str2)
if (isSymmetrical(str2)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 3
str3 = "madma"
print("String 3:", str3)
if (isSymmetrical(str3)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 4
str4 = "civic"
print("String 4:", str4)
if (isSymmetrical(str4)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")
# Test case: 5
str5 = "khokho"
print("String 5:", str5)
if (isSymmetrical(str5)):
print("Yes, the given string is symmetrical")
else:
print("No, the given string is not symmetrical")

出力:

 String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical

関連: Pythonを学ぶ?文字列を操作する方法は次のとおりです

与えられた文字列が対称であるかどうかを判断するJavaScriptプログラム

以下は、特定の文字列が対称であるかどうかを判断するためのJavaScriptプログラムです。

 // JavaScript program to check whether the string is symmetrical or not
// Function to check whether the string is symmetrical or not
function isSymmetrical(str) {
var midIndex;
var length = str.length;
// If the length of string is even
if (length % 2 == 0) {
midIndex = Math.floor(length/2);
}
// If the length of string is odd
else {
midIndex = Math.floor(length/2) + 1;
}
var pointer1 = 0;
var pointer2 = midIndex;
while(pointer1<midIndex && pointer2<length) {
if(str[pointer1] == str[pointer2]) {
pointer1 += 1;
pointer2 += 1;
} else {
return false;
}
}
return true;
}

// Test case: 1
var str1 = "abab";
document.write("String 1: " + str1 + "<br>");
if (isSymmetrical(str1)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 2
var str2 = "madam";
document.write("String 2: " + str2 + "<br>");
if (isSymmetrical(str2)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 3
var str3 = "madma";
document.write("String 3: " + str3 + "<br>");
if (isSymmetrical(str3)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 4
var str4 = "civic";
document.write("String 4: " + str4 + "<br>");
if (isSymmetrical(str4)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}
// Test case: 5
var str5 = "khokho";
document.write("String 5: " + str5 + "<br>");
if (isSymmetrical(str5)) {
document.write("Yes, the given string is symmetrical" + "<br>");
} else {
document.write("No, the given string is not symmetrical" + "<br>");
}

出力:

 String 1: abab
Yes, the given string is symmetrical
String 2: madam
No, the given string is not symmetrical
String 3: madma
Yes, the given string is symmetrical
String 4: civic
No, the given string is not symmetrical
String 5: khokho
Yes, the given string is symmetrical

関連:文字列内で最も頻繁に発生する文字を見つける方法

文字列に基づいて問題を解決する

文字列は、インタビューをプログラミングするための最も重要なトピックの1つです。文字列が回文であるかどうかの確認、2つの文字列が互いにアナグラムであるかどうかの確認、文字列内で最も頻繁に出現する文字の検索、文字列の反転など、文字列に基づいて有名なプログラミングの問題のいくつかを解決する必要があります。完全に準備することを探しています。