镜像字符串

镜像字符串:就是根据自己设定的转换表对字符串进行转换。

python中用maketrans来创建字符映射的转换表

str.maketrans(intab, outtab)

第一个参数是字符串,表示需要转换的字符,

第二个参数也是字符串表示转换的目标。两个字符串的长度必须相同,为一一对应的关系。

translate() 方法根据转换表进行创建镜像字符串

str.translate(table)
bytes.translate(table[, delete])    
bytearray.translate(table[, delete]) 

table -- 翻译表,翻译表是通过 maketrans() 方法转换而来。

deletechars -- 字符串中要过滤的字符列表。

#!/usr/bin/python3
 
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)   # 制作翻译表
 
str = "this is string example....wow!!!"
print (str.translate(trantab))

以上实例输出结果如下:

th3s 3s str3ng 2x1mpl2....w4w!!!

 以上的结果可以看出,有对应的字符就转换成对应的字段,没有对应的字符则保持不变

转载于:https://www.cnblogs.com/huanyinglvtuan/p/9800573.html

### 实现镜像字符串 对于镜像字符串问题,可以理解为寻找一个字符串中最长的回文子串。这个问题可以通过多种方法来解决,在这里提供一种基于中心扩展的方法。 #### 中心扩展法求解最长回文子串 该算法通过遍历每一个可能成为回文中点的位置,并尝试向两边扩展以查找尽可能长的回文序列[^1]。具体来说: - 对于长度为n的输入字符串,共有2n−1个潜在的中心位置(考虑到奇数和偶数长度的情况) - 每次选取一个新的中心后,比较两侧字符是否相等;如果相同则继续向外扩散直到遇到边界或不再匹配为止 - 记录下每次发现的最大长度及其起始索引以便最后返回整个子串 下面是C++版本的具体实现方式: ```cpp #include <iostream> #include <string> using namespace std; // 函数用于计算从指定位置开始能形成的最大回文半径 int expandAroundCenter(const string& str, int left, int right){ while (left >= 0 && right < str.length() && str[left]==str[right]){ --left; ++right; } return (right-left-1)/2; // 返回实际宽度的一半加一作为结果 } string longestPalindrome(string s) { if(s.empty()) return ""; int start = 0,end=0; for(size_t center=0 ;center<s.size();++center){ auto len1 = expandAroundCenter(s,center,center); // 处理奇数情况 auto len2 = expandAroundCenter(s,center,center+1); // 处理偶数情况 const auto maxLen=max(len1,len2)*2+(len1>len2?1:0); if(maxLen>(end-start)){ start=center-(maxLen-1)/2; end=start+maxLen-1; } } return s.substr(start,end-start+1); } ``` 此代码片段定义了一个`longestPalindrome`函数接收任意类型的字符串参数并返回其内部存在的最长回文子串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值