
C++
C++题目
Axelrod Wayne
这个作者很懒,什么都没留下…
展开
-
string 大小写转换 C++
C++中对于字符的大小写转换可以用函数toupper(char c)或者tolower(char c)#include<iostream>using namespace std;int main(){ string a = "MSD"; for (int i = 0; i < 3; i++) { a[i] = tolower(a[i]); } cout << a; return 0;}//结果为msd#include<iostrea原创 2020-09-09 23:23:32 · 406 阅读 · 0 评论 -
用位运算来实现字符串的比较
思想还是比较简单的,直接上代码bool cmp(string a,string b){ if(a.size()!=b.size()) return fasle; int ans=0; for(int i=0;i<a.size();i++) { ans |= a[i]^b[i]; if(!ans) break; } return ans==0 ;}原创 2020-06-27 11:45:45 · 683 阅读 · 1 评论 -
和为S的两个数字
和为S的两个数字输入一个数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。你可以认为每组输入中都至少含有一组满足条件的输出。样例输入:[1,2,3,4] , sum=7输出:[3,4]本题思路:先将数据复制到set,利用set的find函数判断是否存在一个值等于target-nums[i]class Solution {public: vector<int> findNumbersWithSum(vector原创 2020-05-18 14:11:30 · 126 阅读 · 0 评论 -
两个链表的第一个公共结点
两个链表的第一个公共结点输入两个链表,找出它们的第一个公共结点。当不存在公共节点时,返回空节点。样例给出两个链表如下所示:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3输出第一个公共节点c1AC代码:/** * Definition for singly-linked list. *原创 2020-05-18 13:37:47 · 125 阅读 · 0 评论 -
反转链表
反转链表定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。样例输入:1->2->3->4->5->NULL输出:5->4->3->2->1->NULL/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x),原创 2020-05-18 13:31:03 · 119 阅读 · 0 评论 -
把字符串转换成整数
把字符串转换成整数请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用atoi或者其他类似的库函数。样例输入:"123"输出:123注意你的函数应满足下列条件:1.忽略所有行首空格,找到第一个非空格字符,可以是 ‘+/−’ 表示是正数或者负数,紧随其后找到最长的一串连续数字,将其解析成一个整数;2.整数后可能有任意非数字字符,请将其忽略;3.如果整数长度为0,则返回0;4.如果整数大于INT_MAX(2^31 − 1),请返回INT_MAX;如果整数小原创 2020-05-18 13:11:59 · 175 阅读 · 0 评论 -
最长公共字符串后缀
最长公共字符串后缀给出若干个字符串,输出这些字符串的最长公共后缀。输入格式由若干组输入组成。每组输入的第一行是一个整数N。N为0时表示输入结束,否则后面会继续有N行输入,每行是一个字符串(字符串内不含空白符)。每个字符串的长度不超过200。输出格式共一行,为N个字符串的最长公共后缀(可能为空)。数据范围1≤N≤200输入样例:3babaabacba2aacc2aaa0输出样例:baaAC代码:#include<iostream>#i原创 2020-05-17 18:54:07 · 1429 阅读 · 0 评论 -
字符串最大跨距
字符串最大跨距有三个字符串S,S1,S2,其中,S长度不超过300,S1和S2的长度不超过10。现在,我们想要检测S1和S2是否同时在S中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧)。计算满足上述条件的最大跨距(即,最大间隔距离:最右边的S2的起始点与最左边的S1的终止点之间的字符数目)。如果没有满足条件的S1,S2存在,则输出-1。例如,S = “abcd123ab888efghij45ef67kl”, S1=”ab”, S2=”ef”,其中,S1在S原创 2020-05-17 18:26:08 · 1379 阅读 · 0 评论 -
字符串乘方
字符串乘方给定两个字符串a和b,我们定义ab为他们的连接。例如,如果a=”abc” 而b=”def”, 则ab=”abcdef”。如果我们将连接考虑成乘法,一个非负整数的乘方将用一种通常的方式定义:a0=””(空字符串),a(n+1)=a∗(an)。输入格式输入包含多组测试样例,每组测试样例占一行。每组样例包含一个字符串s,s的长度不超过100。最后的测试样例后面将是一个点号作为一行。输出格式对于每一个s,你需要输出最大的n,使得存在一个字符串a,让s=an。输入样例:abcdaaa原创 2020-05-17 17:52:51 · 804 阅读 · 0 评论 -
走方格
走方格给定一个n*m的方格阵,沿着方格的边线走,从左上角(0,0)开始,每次只能往右或者往下走一个单位距离,问走到右下角(n,m)一共有多少种不同的走法。输入格式共一行,包含两个整数n和m。输出格式共一行,包含一个整数,表示走法数量。数据范围1≤n,m≤10输入样例:2 3输出样例:10AC代码:#include<iostream>using namespace std;int m,n,cnt;int f(int x,int y){ if(x==原创 2020-05-13 00:20:12 · 553 阅读 · 0 评论 -
平方矩阵 III
平方矩阵 III输入整数N,输出一个N阶的二维数组M。这个N阶二维数组满足M[i][j] = 2i+j。具体形式可参考样例。输入格式输入包含多行,每行包含一个整数N。当输入行为N=0时,表示输入结束,且该行无需作任何处理。输出格式对于每个输入整数N,输出一个满足要求的N阶二维数组。每个数组占N行,每行包含N个用空格隔开的整数。每个数组输出完毕后,输出一个空行。数据范围0≤N≤15输入样例:123450输出样例:11 22 41 2 42 4 84原创 2020-05-12 21:10:48 · 776 阅读 · 0 评论 -
平方矩阵 II
平方矩阵 II输入整数N,输出一个N阶的二维数组。数组的形式参照样例。输入格式输入包含多行,每行包含一个整数N。当输入行为N=0时,表示输入结束,且该行无需作任何处理。输出格式对于每个输入整数N,输出一个满足要求的N阶二维数组。每个数组占N行,每行包含N个用空格隔开的整数。每个数组输出完毕后,输出一个空行。数据范围0≤N≤100输入样例:123450输出样例:11 22 11 2 32 1 23 2 11 2 3 42 1 2 33 2 1 2原创 2020-05-12 20:58:35 · 717 阅读 · 0 评论 -
蛇形矩阵
蛇形矩阵输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 6 5解法:#include <iostrea...原创 2020-01-17 19:51:58 · 659 阅读 · 0 评论 -
平方矩阵 I
平方矩阵 I输入整数N,输出一个N阶的回字形二维数组。数组的最外层为1,次外层为2,以此类推。输入格式输入包含多行,每行包含一个整数N。当输入行为N=0时,表示输入结束,且该行无需作任何处理。输出格式对于每个输入整数N,输出一个满足要求的N阶二维数组。每个数组占N行,每行包含N个用空格隔开的整数。每个数组输出完毕后,输出一个空行。数据范围0≤N≤100输入样例123...原创 2020-01-17 16:59:37 · 3596 阅读 · 0 评论 -
删除链表中重复的节点
删除链表中重复的节点在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。样例1输入:1->2->3->3->4->4->5输出:1->2->5样例2输入:1->1->1->2->3输出:2->3算法(线性扫描) O(n)为了方便处理边界情况,我们定义一个虚拟元素 d...原创 2020-01-18 21:19:41 · 225 阅读 · 0 评论 -
两个链表的第一个公共结点
两个链表的第一个公共结点输入两个链表,找出它们的第一个公共结点。当不存在公共节点时,返回空节点。样例给出两个链表如下所示:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 ...原创 2020-01-18 21:16:04 · 104 阅读 · 0 评论 -
求1+2+…+n
求1+2+…+n求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。样例**输入:**10****输出:55常规做法一:公式法1+2+…+n=(n+1)*n/2常规做法二:递归int f(int n){ int res=n; if(n>0) res+=f(n-1); return res...原创 2020-01-18 18:18:40 · 235 阅读 · 0 评论 -
排列(DFS)
排列(DFS)题目描述给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤9样例输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1思路:(dfs) O(n!)使用DFS 进入...原创 2020-01-18 16:39:22 · 549 阅读 · 1 评论 -
跳台阶(动态规划入门)
跳台阶一个楼梯共有n级台阶,每次可以走一级或者两级,问从第0级台阶走到第n级台阶一共有多少种方案。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示方案数。数据范围1≤n≤15输入样例:5输出样例:8思路:第0级台阶到第1级台 只有一种方法 上1级台阶第0级台阶到第2级台 有两种方法 1种是0-2 上2级台阶 1种是上到1级台阶 再上2级台阶第0级台阶...原创 2020-01-18 14:41:50 · 1412 阅读 · 0 评论