如题:
在非递减字符串中,从左到右的字符依次按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);
}
分享到:
相关推荐
"汇编语言字符串匹配问题"这个主题涉及到的是如何在汇编程序中实现对两个字符串进行比较,判断它们是否相等或者一个字符串是否为另一个的子串。 字符串匹配算法是计算机科学中的一个基础概念,广泛应用于文本处理、...
(n的阶乘),这是因为每个位置都可以独立选择字符串中的任意一个字符作为元素,且随着位置的增加,可选的字符数量递减。 #### 2. C语言中的动态内存分配 在C语言中,动态内存分配允许程序员根据需要在运行时分配和...
- **合并操作**:将两个非递减顺序的顺序表合并成一个,保持非递减顺序。如果输入的元素顺序不符合要求,系统不会排序,仅按输入顺序输出。 2. **链表**: - **初始化**:链表初始化时,允许逆序插入元素,链表...
5. 递减`edi`以指向目标字符串的最后一个有效字符。 6. 使用循环指令`lodsb`和`stosb`逐个复制源字符串的字符。 7. 当遇到`'\0'`时,停止复制。 8. 恢复`edi`和`esi`的值,并返回。 #### 带长度限制的字符串连接...
本程序旨在实现一个简单的交互式应用,用户可以通过键盘输入一系列字符,并在输入完成后,系统会统计并展示输入字符串中的字符总数、数字字符数量以及非数字字符的数量。程序通过控制台与用户进行交互。 #### 主要...
4. **复制非数字字符**:如果当前字符不是数字,使用`MOV`指令将其复制到临时字符串,并用`INC`指令递增临时字符串的指针。 5. **结束循环**:当到达字符串末尾或找到所有非数字字符后,使用`JMP`指令跳出循环。 6...
如果字符串中含有非字母字符,则不会发生递增行为。 3. **示例代码**: ```php $str = 'A'; for ($i = 0; $i ; $i++) { echo $str . ', '; $str++; } // 输出: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O,...
在MySQL数据库中,有时我们需要从字符...这个自定义函数`GetNum`能有效地从任意字符串中提取连续或非连续的数字,对于处理含有数字的复杂字符串非常有用,尤其适用于需要在数据库层面直接进行数据清洗和预处理的情况。
如果找到非空白字符,`pos` 递减,直到找到第一个非空白字符或者 `pos` 小于2(表示已检查到字符串开头)。然后使用 `rtrim` 函数删除 `pos` 之前的所有字符,以确保末尾的空白字符被移除。 在实际使用中,你可以...
在本章中,我们将深入探讨计算机编程中的循环结构和字符串处理指令,这些都是程序设计的基础要素。首先,我们关注的是循环,它是重复执行某段代码的关键工具。 循环指令在编程中至关重要,它们允许我们高效地执行...
6. **字符串连接运算符**:`.` 用于将两个字符串连接在一起。例如,`$i = 'Hello, ' . 'World';` 会产生字符串 "Hello, World"。 7. **赋值运算符**:`=` 用于将右侧的值赋给左侧的变量,还有复合赋值运算符如 `+=`...
- 这种方法通过循环检查字符串的左右两端是否为空格,是空格则通过循环或递减索引来排除这些空格。自定义函数`trim`将`trimLeft`和`trimRight`两个函数组合起来使用,`trimLeft`用于去除字符串左边的空格,而`...
2. 当递增一个字母字符串时,它会按照字母顺序进行递增,而非ASCII值的简单加法。 3. 对于'Z'或'a'之后的递增,会导致'AA'、'AB'这样的结果,而不是直接转到'['或'b'。 4. 在处理字符串循环时,要注意可能引发的无限...
这个例子则展示了字符串变量不支持递减操作,递减操作将不会影响字符串变量的值。 在字符串比较中,这种递增逻辑也发挥着作用。例如,'AA'、'BB'、'CC'一直到'YZ',在PHP中都被视为小于等于'Z',因为它们可以通过一...
14. 非字母字符替换为空格:遍历字符串,对非字母字符进行替换。 15. 邮箱地址合法性判断:使用正则表达式进行匹配,验证邮箱格式。 16. 子串出现次数大于指定次数:使用滑动窗口或哈希表记录子串出现频率,检查...
后缀树是一种高效的数据结构,...总结来说,后缀树是解决字符串问题的强大工具,它能够快速查找子串、统计子串出现次数及找出最长重复子串等,对于ACM竞赛中的字符串题目,掌握后缀树的使用无疑会大大提升解题效率。
**问题描述:** 给定一篇文章,存储在一个字符串数组 `xx` 中。编写函数 `StrOR()`,对每行字符串进行处理:将所有小写字母 'o' 左边的字符串内容移到该串的右边,然后删除所有的 'o' 字符,最后将处理后的字符串按...
- 这是H指数问题的一个变种,数组已经是按非递减顺序排列的,因此可以应用二分查找来优化解法。 43. ValidAnagram - 检查两个字符串是否是彼此的字母异位词。这需要对字符计数和字符串的排序处理。 44. ...