几种字符串处理的题

1.对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。

给定两个字符串AB及他们的长度,请返回一个bool值,代表他们是否互为变形词。

测试样例:

"abc",3,"bca",3
返回:true
/*利用数组模拟hash表,将每一个字符对应的ascii码作为数组的下标
 每当对应字符出现就让初始化为0的数组赋值为1,这样另外一个字符串
 只需要在这个数组里面查找,如果对应的每个字符对应的数组元素都为1,则
 说明两个字符串互为变形词,反之不是*/
class Transform {
public:
    bool chkTransform(string A, int lena, string B, int lenb) {
        // write code here
       if(lena!=lenb)//长度不等直接返回false
           return false;
        const char *pA=A.c_str();//将string转化为const char*
        const char *pB=B.c_str();
        int arr[256]={0};
        while(*pA){
            arr[*pA]=1;
            pA++;
        }
        while(*pB){
            if(arr[*pB]!=1)
                return false;
            pB++;
        }
        return true;
    }
};

  

时间: 2024-10-13 00:07:44

几种字符串处理的题的相关文章

字符串解密--水题

传纸条 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 传纸条是一种在课堂上传递信息的老方法,虽然现在手机短信和QQ聊天越来越普及,但是手写的信息会让人感到一种亲切感.对许多学生而言,在学校里传递一些私秘性的信息是一种令人兴奋的打发时光的方式,特别是在一些令人厌烦的课堂上. XX 和 YY 经常在自习课的时候传纸条来传递一些私密性的信息.但是他们的座位相隔比较远,传纸条要通过其他人才能到达对方.在传递过程中,难免会有一些好奇心

字符串处理经典题

字符串处理经典题 1.CF219C Color Stripe(要求修改后的串中相邻字符不相同,求最少修改次数) Q: 给你一个长度为N 的字符串(由大写字母组成)和一个数量K,K是指可使用的不同的大写字母的个数.现要求修改源字符串,使得串中相邻的两个位置上的元素不同:一次只能更改一个字符,问你最少的修改次数是多少?并输出任意一个满足条件的答案字符串. A:从字符串第二位开始逐个检查即可,每次维护num[i ]= SG(num[ i- 1 ],num[ i+ 1]):即可 .注意K= 2时可以特判

字符串截图类型题

//第1题 请判断images中存储的图片格式(例如,第X个为png图片) NSArray *images = @[@"A4E6E10BC0752623.png",@"2DE2C314665048CC.jpg",@"068E12268478787.gif",@"30A030B7C6.jpg"]; for (int i = 0 ; i < [images count]; i++) { NSString *str = ima

POJ 2185 Milking Grid--另一种字符串的循环节

在Power String中,求一个字符串的循环节,应满足L mod (L-next[L])=0,则循环节长度为L-next[L] 存在另一种形式的循环节,例如abcabca,此时如果将abc重写三次,得到abcabcabc,则原字符串为其前缀. 此时对于原字符串,其循环节长度为L-next[L]=7-4=3,循环节为abc.具体可见下面这个题 [Baltic2009]Radio Transmission 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知

shell脚本中8种字符串截取方法_转自脚本之家

转自:http://www.jb51.net/article/56563.htm Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.aaa.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符

Shell脚本8种字符串截取方法总结

Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.aaa.com/123.htm 2. ## 号截取,删除左边字符,保留右边字符. echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个

JS中三种字符串连接方式及其性能比较

工作中经常会碰到要把2个或多个字符串连接成一个字符串的问题,在JS中处理这类问题一般有三种方法,这里将它们一一列出顺便也对它们的性能做个具体的比较. 第一种方法  用连接符“+”把要连接的字符串连起来: str="a"; str+="b"; 毫无疑问,这种方法是最便捷快速的,如果只连接100个以下的字符串建议用这种方法最方便. 第二种方法  以数组作为中介用 join 连接字符串: var arr=new Array(); arr.push(a); arr.push

【转】Java 5种字符串拼接方式性能比较。

最近写一个东东,可能会考虑到字符串拼接,想了几种方法,但对性能未知,于是用Junit写了个单元测试. 代码如下: import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestS

4种字符串匹配算法:BS朴素 Rabin-karp 有限自动机 KMP(上)

字符串的匹配的算法一直都是比较基础的算法,我们本科数据结构就学过了严蔚敏的KMP算法.KMP算法应该是最高效的一种算法,但是确实稍微有点难理解.所以打算,开这个博客,一步步的介绍4种匹配的算法.也是<算法导论>上提到的.我会把提到的四种算法全部用c/c++语言实现.提供参考学习.下图的表格,介绍了各个算法的处理时间和匹配时间.希望我写的比较清楚.如果不理解的,或者不对的,欢迎留言. 字符串匹配算法及其处理时间和匹配时间 算法 预处理时间 匹配时间 朴素算法 0 O((n-m+1)m) Rabi