Ral*_*lph 3 string algorithm ascii permutation char
我正在破解代码访谈书,我在数组和字符串章节中遇到了问题,他们要求编写一个方法,证明作为输入给出的两个字符串是彼此的排列.
书中的答案非常干净清晰.一种是排序,然后比较它们是否相同,另一种是检查两个字符串是否具有相同的字符数.
但是,我对此问题有不同的处理方法,我想与您分享以查看您的意见.
我假设字符是ASCII字符.所以我想到的是首先检查两个字符串的长度是否相等,如果不是,我们直接返回false,因为很明显它反对排列的定义.
如果是这种情况,我们继续算法.首先,我们初始化:
int sum = 0;
int sum1 = 0;
Run Code Online (Sandbox Code Playgroud)
然后我们遍历每个字符串的字符,将每个字符的ASCII值添加到总和中,并比较最后的总和.如果他们是平等的,那么我们就得到了一个排列.
这种方法有效吗?
不,这是行不通的,因为12是两者之2和10与合计3和9.
你的算法"ad"将是一个排列"bc".
在一般情况下,如果您允许合理范围的字符和字符串长度,则没有真正的捷径.你提到的两个中最好的解决方案取决于语言.