请实现 个算法,确定 个字符串的所有字符【是否全都不同】。这 我们要求【不允
成都创新互联公司主营勉县网站建设的网络公司,主营网站建设方案,成都app软件开发公司,勉县h5小程序定制开发搭建,勉县网站营销推广欢迎勉县等地区企业咨询
许使 额外的存储结构】。 给定 个string,请返回 个bool值,true代表所有字符全都
不同,false代表存在相同的字符。 保证字符串中的字符为【ASCII字符】。字符串的
度 于等于【3000】。
这 有 个重点,第 个是 ASCII字符 , ASCII字符 字符 共有256个,其中128个是常
字符,可以在键盘上输 。128之后的是键盘上 法找到的。
然后是全部不同,也就是字符串中的字符没有重复的,再次,不准使 额外的储存结
构,且字符串 于等于3000。
如果允许其他额外储存结构,这个题 很好做。如果不允许的话,可以使 golang内置
的 式实现。
通过 strings.Count 函数判断:
使 的是golang内置 法 strings.Count ,可以 来判断在 个字符串中包含
的另外 个字符串的数量
还有不同的方法同样可以实现,你了解吗?
推荐go相关技术 专栏
gRPC-go源码剖析与实战_带你走进gRPC-go的源码世界-CSDN博客
百位数有4种选择,为与百位数不重复,十位数就只有3种选择了;同样道理,个位数就只有2种选择。所以1、2、3、4等4个数字能组成4x3x2共24种互不相等且没有重复数字的3位数。根据上述原理,可用一个3层嵌套for循环来完成,代码如下:
#include "stdio.h"
int main(int argc,char *argv[]){
int i,j,k,t;
printf("A total of %d no repeat number 3-digits, they are as follows:\n",4*3*2);
for(t=0,i=1;i=4;i++)//百位数字有4种选择
for(j=1;j=4;j++)//十位数字有3种选择
if(j!=i)//遇到十位数字等于百位数字时跳过
for(k=1;k=4;k++)//个位数字只有2种选择了
if(k!=i k!=j)//个位数字与十位或百位数字相等时跳过
printf(++t%10 ? "%4d" : "%4d\n",i*100+j*10+k);//输出该三位数
if(t%10)
printf("\n");
return 0;
}
扩展资料
#includestdio.h
main()
{
int i, j, k;
int m=0;
for(i=1;i5;i++)
for(j=1;j5;j++)
for(k=1;k5;k++)
{
if(i!=jk!=ji!=k)
{
printf("%d%d%d\n",i,j,k);
m++;
}
}
printf("%d\n",m);
getch();
}
只把最终的函数放到defer栈中,因此
defer s.Add(1).Add(2) 等价于下面2句了
s..Add(1)
defer s.Add(2)
你可以试试
defer s.Add(2).Add(1).Add(4)
s.Add(3)
看看执行的结果是不是 2134