Python 用于查找字符串中的镜像字符
本文教您如何编写一个Python程序来查找字符串中的镜像字符。
首先让我们理解一下什么是字符串中的镜像字符。从前向后和从后向前分别位于相同位置的两个相同字母字符被称为镜像字符。例如,字母a的镜像字符是”z”,”b”的镜像字符是”y”,依此类推。
输入输出场景
以下是一个字符串中镜像字符的输入和输出示例-
Input: p = 3
Input string = Coding
Output: Cowrmt
在字符串“coding”中,字母“d”,“i”,“n”,“g”的索引位置分别为4、9、14和7。因此,它的镜像字符“w”,“r”,“m”,“t”的索引位置也分别与字母的反向顺序相同,即4、9、14和7。由于位置“p”等于3,所以它从字符串“Coding”的第三个位置开始。
使用循环
解决这个问题的一种方法是使用简单的循环,下面是一个实现此目的的算法:
步骤
- 输入字符串和需要镜像字符的位置。
-
创建一个按字母顺序排序的字符串并存储。
-
创建一个空字符串。
-
然后从字符串的起始位置开始循环每个字符,直到达到需要镜像的位置,保持该位置之前的所有字符不变。
-
将需要镜像的位置之后的字符按字母顺序反转。
-
返回该字符串。
示例
以下是使用循环查找字符串中镜像字符的示例:
def mirror_characters(string, x):
# Create a string with reversed alphabetical order
alphabet = "zyxwvutsrqponmlkjihgfedcba"
z = len(string)
# Reversing the alphabetical order of the string from the given position leaving the rest unchanged
result = ""
for i in range(0, x):
result = result + string[i];
for i in range(x, z):
result = (result + alphabet[ord(string[i]) - ord('a')]);
return result;
# The driver code
string = input("Enter the string name ::>")
x = int(input("Enter the position to start from ::>"))
result = mirror_characters(string, x - 1)
print("The Result is ::>",result)
输出
以下是以上代码的输出结果 –
Enter the string name ::>TutorialsPoint
Enter the position to start from ::>4
The Result is ::> Tutlirzohqlrmg
使用字典
使用字典的概念,我们将在Python中执行这项工作。我们将创建一个字符的字母顺序字典,并将其映射到字符的反向方式。然后,使用字典,我们将从字符串的第k个位置开始迭代字符,并将它们转换为它们的镜像值。
步骤
为了更好地理解策略,按照以下算法进行操作:
- 创建一个函数,将字符镜像到第n个位置后的位置。
-
将变量设置为逆向和字母顺序。
-
构建字典。
-
字符串必须在n处切割成两部分。
-
遍历字符串的第二部分时,镜像每个字符。
-
将第一个字符串和镜像字符串连接。
-
结果是将字符串连接后打印。
-
创建字符串和n值。
-
在函数中传递字符串和n。
示例
为了理解上述策略的实施方式,看一下下面的程序。我们使用dict()和zip()方法构建了一个字典,字母字符作为键,反转字符作为值。
def MirrorCharacter(str,n):
# creating the dictionary
alphabetical_order = 'abcdefghijklmnopqrstuvwxyz'
reverse_alphabetical_order = 'zyxwvutsrqponmlkjihgfedcba'
dictionaryCharacters = dict(zip(alphabetical_order,reverse_alphabetical_order))
# dividing the string at n
prefix = str[0:n-1]
suff = str[n-1:]
mirror = ''
# changing the suffix into mirror characters
for i in range( len(suff)):
mirror = mirror + dictionaryCharacters[suff[i]]
# joining the prefix and the mirrored part
return (prefix+mirror)
string = 'Tutorialspoint'
n = 6
print("The mirrored value is: ",MirrorCharacter(string,n))
输出
以下是上述代码的输出结果 −
The mirrored value is: Tutorr
示例
以下是使用字典查找字符串中镜像字符的示例-
dictionaryCharacters = dict(
zip(
'abcdefghijklmnopqrstuvwxyz',
'zyxwvutsrqponmlkjihgfedcba' )
)
def mirror(str, x):
str = list(str)
for i in range(x-1, len(str)):
print(i, str[i], dictionaryCharacters[str[i]])
str[i] = dictionaryCharacters[str[i]]
return ''.join(str)
assert mirror('Tutorialspoint', 6), 'stipulation'
assert mirror('Incomprehensibility', 8), 'prominence'
输出
以下是上述代码的输出结果 –
5 i r
6 a z
7 l o
8 s h
9 p k
10 o l
11 i r
12 n m
13 t g
7 e v
8 h s
9 e v
10 n m
11 s h
12 i r
13 b y
14 i r
15 l o
16 i r
17 t g
18 y b