如题:
在非递减字符串中,从左到右的字符依次按ASC码非递减排列,例如 abcd,aaaa,aabb等等,现在假设字符串由a-j等10个字符串组成,请你确定特定长度的非递减字符串的数目。
算法思想:当我显现看到这个题,有些迷惑,为什么是十个字符串呢,,后才自然想到对应十个阿拉伯数字0-9.
问题就可以从这个地方解决。把某个长度的串看成是一个整数,想办法取出这个整数的每一个具体的位,然后进行 比较不就可以判断是否复合条件,比如给定的长度为4,我就从0000遍历到9999,找出复合条件的整数然后计数,不就可以了吗。这个方法效率肯定会比较低,而且如果刚给的字母的个数超过10,就不能用这个办法了。。。。不知道还有什么其他好的办法?
下面是我实现的代码--简单
#include<stdio.h>
#include <stdlib.h>
int exp(int i)
{
int res=1;
int j=0;
while(j<i)
{
res*=10;
j++;
}
return res;
}
void getBit(int str[],int data,int l) //获取整数中每一个位
{
for(int i=0;i<l;i++)
{
str[i]=0;
}
for(int j=0;j<l;j++)
{
str[j]=(data%exp(j+1))/exp(j);
}
}
int isSort(int str[],int l) //判断是否非递减
{
for(int i=0;i<l-1;i++)
{
if(str[i]<str[i+1])
{
return 0;
}
}
return 1;
}
void main()
{
int l=4;//字符串长度
int count=0;//计数
printf("please input a len of str\n");
scanf("%d,%d",&l);
printf("\n");
int data=0;//长度为l的最大整数
int *bit=(int*)malloc(sizeof(int)*l);;
for(int i=0;i<l;i++)
{
data+=exp(i)*9;
}
for(int j=0;j<=data;j++)
{
getBit(bit,j,l);
if(isSort(bit,l)==1)
{
count++;
}
}
free(bit);
printf("%d\n",count);
}
分享到:
相关推荐
今天看到php手册上有这么一段话: “在处理字符变量的算数运算...递增/递减其他字符变量则无效,原字符串没有变化。” 也就是说: 复制代码 代码如下: for($i = ‘A’; $i <= ‘Z’; $i++) { echo $i; //if( $i ==
4.1.4 字符数组和字符串处理 147 4.1.5 多维数组 150 4.2 间接数据存取 153 4.2.1 指针的概念 153 4.2.2 声明指针 154 4.2.3 使用指针 155 4.2.4 初始化指针 157 4.2.5 sizeof运算符 162 4.2.6 ...
用数组实现的字符串和用指针实现的字符串的不同点 318 字符串数组 320 11-2 通过指针操作字符串 323 判断字符串长度 323 字符串的复制 325 不正确的字符串复制 328 返回指针的函数 329 11-3 字符串处理...
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 7. 斐波那契数组 延伸...
当然,你首先必须自己转换字符串,然后将已转换的消息表资源嵌入你的.exe文件或DLL模块,不过,这时该函数会选定正确的嵌入对象。ErrorShow示例应用程序(本章后面将加以介绍)展示了如何调用该函数,以便将...
encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...
encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...
encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时...
leetcode有效力扣解决的...非递减数组 给定一个包含 n 个整数的数组 nums,您的任务是检查它是否可以通过修改最多 1 个元素而变得不减少。 我们定义一个数组是非递减的,如果 nums[i] <= nums[i + 1] 对每个 i(从 0
修改数组为非递减 子串问题 分割字符串 根据身高排队 双指针 有序数组中寻找两个数字等于特定数字 旋转元音字母 寻找两数平方和等于第三个数 字符串回文 归并排序数组 链表是否有环 字符串最长单词 排序 第 K 个元素...
6.4.2 使用库函数确定字符串的长度 211 6.4.3 使用库函数连接字符串 212 6.4.4 比较字符串 213 6.4.5 搜索字符串 216 6.5 分析和转换字符串 219 6.5.1 转换字符 222 6.5.2 将字符串转换成数值 225 6.7 使用...
使用字符串方法搜寻字符串 66 使用正则表达式搜寻字符串 67 判断字符串是否表示数值 70 将 String 转换为 DateTime 71 在旧版编码方式和 Unicode 间转换 72 转换 RTF 为纯文本 74 语句、表达式和运算符 75 语句 76 ...
leetcode中国 leetCode Learning algorithm from leetCode, Work hard , boy ...反转字符串中的元音字符 ...回文字符串 ...按照字符出现次数对字符串排序 ...荷兰国旗问题DutchFlag ...修改一个数成为非递减数组 10. 子数组最大的和
非递减数组 跳跃游戏二 将排序列表转换为二叉搜索树 两个字符串的删除操作 将箱子放入仓库 I 超级回文 构造具有多个和的目标数组 数素数 您可以从卡中获得的最大积分 范围总和查询 2D - 不可变 不明确的坐标 将...
),将两个按B分成绩非递减排序的学生成绩单合并为一个按B分成绩非递增排序的通讯录,B分成绩相同且学号相同的成绩记录在结果中只保留一个;要求算法的时间复杂度不超过两个链表的长度之和O(m+n); (8)实现函数int ...
以下关于 Python 字符串的描述中,错误的是 A 字符串是字符的序列,可以按照单个字符或者字符片段进行索引 B 字符串包括两种序号体系:正向递增和反向递减 C Python 字符串提供区间访问方式,采用 [N:M] 格式,...
判断数组是否非递减(<=1 异常) 667 美丽的排列 2:构造一个包含 [1,n] 的长度为 n 的列表,其中邻居之间的 abs 差异恰好形成 k 个不同的数字 数字消除: 原来的约瑟夫问题:消除一个,跳过一个,圈起来。 记