Check whether two strings are anagrams using C++(使用 C++ 检查两个字符串是否是字谜)
问题描述
我想出的下面的程序用于检查两个字符串是否是字谜.它适用于小弦但适用于较大的弦(我试过:听过,入伍)它给了我一个不!"
The program below I came up with for checking whether two strings are anagrams. Its working fine for small string but for larger strings ( i tried : listened , enlisted ) Its giving me a 'no !'
帮助!
#include<iostream.h>
#include<string.h>
#include<stdio.h>
int main()
{
char str1[100], str2[100];
gets(str1);
gets(str2);
int i,j;
int n1=strlen(str1);
int n2=strlen(str2);
int c=0;
if(n1!=n2)
{
cout<<"
They are not anagrams ! ";
return 0;
}
else
{
for(i=0;i<n1;i++)
for(j=0;j<n2;j++)
if(str1[i]==str2[j])
++c;
}
if(c==n1)
cout<<"yes ! anagram !! ";
else
cout<<"no ! ";
system("pause");
return 0;
}
推荐答案
我很懒,所以我会使用标准库功能对两个字符串进行排序,然后比较它们:
I am lazy, so I would use standard library functionality to sort both strings and then compare them:
#include <string>
#include <algorithm>
bool is_anagram(std::string s1, std::string s2)
{
std::sort(s1.begin(), s1.end());
std::sort(s2.begin(), s2.end());
return s1 == s2;
}
一个小的优化可以是在排序之前检查字符串的大小是否相同.
A small optimization could be to check that the sizes of the strings are the same before sorting.
但如果这个算法被证明是一个瓶颈,我会暂时摆脱我的一些懒惰并将其与一个简单的计数解决方案进行比较:
But if this algorithm proved to be a bottle-neck, I would temporarily shed some of my laziness and compare it against a simple counting solution:
- 比较字符串长度
- 实例化一个计数映射,
std::unordered_map
;米 - 循环
s1
,增加每个char
的计数. - 循环
s2
,递减每个char
的计数,然后检查计数是否为0
- Compare string lengths
- Instantiate a count map,
std::unordered_map<char, unsigned int> m
- Loop over
s1
, incrementing the count for eachchar
. - Loop over
s2
, decrementing the count for eachchar
, then check that the count is0
这篇关于使用 C++ 检查两个字符串是否是字谜的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 C++ 检查两个字符串是否是字谜
基础教程推荐
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 从 std::cin 读取密码 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01