阿里面试题 ——输入一个字符串,输出所有的排列
一、题目解释
输入一个字符串,输出其所有的排列组合。
PS:图片说明
VS2013环境下的代码:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <time.h>using namespace std;bool perm(vector<int>& v)
{vector<int>::iterator left = v.end();--left;vector<int>::iterator right = left; //right指向倒数第一个--left;//left指向倒数第二个数字//找出第一对左小右大的数while (right != v.begin() && *left >= *right){if (--right != v.begin()){--left;}}if (right == v.begin()) //当right走到最开始的位置,表示全部已经排完,不需要在进行排列{reverse(right, v.end());return false;}vector<int>::iterator last = v.end() - 1; //指向最后一个数while (*last <= *left) //找出从右往左第一个比left大的数字{--last;}swap(*left, *last); //将last和left进行交换reverse(right, v.end()); //在将right往后的数据进行逆置return true;
}
void Print(vector<int>& v)
{vector<int>::iterator it1 = v.begin(); //打印函数,参数为vector整形,利用迭代器访问后强制类型转换输出while (it1 != v.end()){char c = *it1;cout << c;++it1;}cout << endl;}bool cmp(int a, int b) //STL排序算法相关
{return a < b;
}int main()
{clock_t start, stop;start = clock();vector<int> v; //创建vector用来存储字符的Ascall码,用以最终的排列。string s; //输入字符串cin >> s;int tmp = 0;string::iterator it = s.begin();while (it != s.end()) //将字符串分解为字符,并将字符的Ascall码存入容器v中,用以排列{tmp = (int)*it; //强制类型转换为整形,存入整形容器v中。v.push_back(tmp);++it;}sort(v.begin(), v.end(), cmp); //对vector的数据进行排序,用以后续的排序vector<int>::iterator first = v.begin();vector<int>::iterator last = v.end();int count = 0;do{Print(v);count++;} while (perm(v)); //循环排列system("pause"); //暂停程序,VS环境下的特殊语句
}
阿里面试题 ——输入一个字符串,输出所有的排列相关推荐
- Python输入一个字符串,输出其中每个字符的出现次数。要求使用标准库collotections中的Counter类...
一.题目: 1.输入一个字符串,输出其中每个字符的出现次数.要求使用标准库collotections中的Counter类. 2.输入一个字符串,输出其中只出现了一次的字符及其下标. 3.输入一个字符串 ...
- c语言案例——输入一个字符串,将其逆序输出
字符串常量可以赋值给一个字符指针或者一个字符数组,比如: /*1*/char *str = "this is a string"; /*2*/char str2[]= " ...
- C语言 输入一个字符串,统计字符个数,并按照倒序输出该字符串。
题目:C语言 输入一个字符串,统计字符个数,并按照倒序输出该字符串. #include<stdio.h>void main() {char str[10];scanf("%s&q ...
- 实现输入一个字符串,分别将大写字母、小写字母、数字、其他字符存到列表里面并且输出列表
1.实现输入一个字符串,分别将大写字母.小写字母.数字.其他字符存到列表里面并且输出列表 capital = [] lowercase = [] number = [] character = [] ...
- 用户输入一个字符串,将下标为偶数的字符提出来合并成一个新的字符串A,再将下标为奇数的字符提出来合并成一个新的字符串B,再将字符串A和B连接起来并输出。
根据下述要求,编写一个程序:用户输入一个字符串,将下标为偶数的字符提出来合并成一个新的字符串A,再将下标为奇数的字符提出来合并成一个新的字符串B,再将字符串A和B连接起来并输出. rs = [] ev ...
- python输入一个字符串、计算其中小写字符的个数_编写程序,输入一个字符串,统计其中大小写字母数字和其他符号的个数并输出,要求统计过程在函数COUNT中进行...
答:对比ASCII码,在程序中小写字母96 答:a = "aAsmr3idd4bgs7Dlsf9eAF" 请将a字符串的数字取出,并输出成一个新的字符串. 请统计a字符串出现的每个 ...
- 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计。 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
题目描述: 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计.按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出. 输入描述:输入一串字符. 输出描述:对 ...
- Python编程基础 第七章 编程练习 用户从键盘上输入一个字符串,如果该字符串的内容不是有效的数值,则输出invalid;如果是有效的数值,再判断其是否是整数,如果是整数则输出yes,否则输出no。
题目内容: 编写程序实现下面功能:用户从键盘上输入一个字符串,如果该字符串的内容不是有效的数值,则输出invalid:如果是有效的数值,再判断其是否是整数,如果是整数则输出yes,否则输出no. 输入 ...
- 输入一个字符串,将其逆序输出。
输入一个字符串,将其逆序输出. 输入提示信息:"Please Enter String1:\n" 输入字符串用gets() 输出提示信息和输出格式:"Result is: ...
- 输入一个字符串,逆序并输出
输入一个字符串,然后逆序这个字符串并输出 代码及运行结果如下: #include <stdio.h> #include <string.h> int main() {char ...
最新文章
- 分析与解决:MySQL分区表复制bug导致的主从延迟
- php 插入表,php 向数据库表中插入数据
- 【Android 组件化】路由组件 ( 路由组件结构 )
- java自定义日志级别_自定义log4j日志级别
- 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.3. Linux的特色)
- Nginx server_name正则表达式匹配配置
- 2021牛客NOIP提高组第二场T2——方格计数(组合数计数)
- 小程序测试用例模板_微信小程序样式:高质量小程序样式模板大全
- rpm安装与yum安装的区别与特点
- Java版 数字金额大写转换
- 毁掉孩子自信的10个杀手
- python可以用c_我们可以在Python中使用C代码吗?
- 方便的管理苹果Mac上菜单栏图标软件推荐:Bartender
- 午休,要有午休床,也要有毛毯
- Atitit 为什么互联网金融会得到高层的支持 ----面子工程战略 政绩战略 大事业战略 高层需要在意识形态创新全球,政绩工程 得到合法性。 银行有很多家,而且别的区域也有。。不独特。。但是支付
- tips to understand kexec
- 【优化求解】基于狼群算法WPA求解最优目标matlab代码
- 【django】短信验证码接口设计、互亿无线短信平台、后端逻辑、前端逻辑【16】
- 通过添加dns加速访问app store
- 易语言GIF屏幕录制