代码相关
文丑颜不良啊
平平无奇的Java开发小白
展开
-
查找字符串中只出现一次的字符
解决此题时需要注意,查找的是2只出现一次的字符,不唯一,应注意与首次出现一次的字符进行区分。#include <iostream>#include <string>using namespace std;int main(){ string str; //根据字母的ASCII码值来作为数组的下标 int a[256] = { 0 };...原创 2019-10-20 11:32:29 · 641 阅读 · 0 评论 -
反转链表
题目描述:输入一个链表,反转链表并输出。思路:通常处理方法是将当前结点的next域指向其前一结点。由于需要将当前结点的next域修改为前一结点,所以我们需要用一个指针PrevNode来记录前一结点。同时,因为修改了当前结点到的next结点后,便无法访问原来的next结点,因此需要一个NextNode指针来记录修改前的原来的next结点。代码如下:#include <iost...原创 2019-10-08 15:37:07 · 155 阅读 · 0 评论 -
链表中倒数第K个结点
题目描述: 输入一个链表,输出该链表中倒数第k个结点。假设此链表中有6个结点,各结点的值分别是1、2、3、4、5、6。我们想要获取倒数第3个结点,即值为4。思路:最易想到的解法是先走到链表的尾端,再从尾端回溯k步,即得到倒数第k个结点。但是单向链表的结点只有从前往后的指针,没有从后往前的指针。但是,如果我们从前往后遍历链表直到尾端呢?假设整个链表有n个结点,那么倒数第k个结点就是从头结点开始的...原创 2019-10-08 14:53:43 · 320 阅读 · 0 评论 -
用两个队列实现栈
首先,明白了栈和队列的特点之后,就发现用队列来实现栈和用栈来实现队列的思想差不多是一样的。队列的特点是先进先出,栈的特点是先进先出,用队列来实现栈,即使用队列来完成先进后出的操作。和用栈实现队列一样,我们假设需要操作的数据为A、B、C、D、E。有两个队列queue1和queue2,和用栈实现队列不同的是,此两个队列没有严格的插入和删除之分,栈实现队列时,我们使用主栈来压栈,辅助栈来弹栈。首先我...原创 2019-10-04 20:04:05 · 2092 阅读 · 0 评论 -
用两个栈实现队列
我们知道,栈的特点是先进后出,而队列的特点是先进先出,那么如何用先进后出的栈来完成队列的先进先出的操作呢?很明显,用一个栈是不能实现的,因此我们需要一个辅助栈来配合主栈完成。假设我们先把元素A、B、C、D压栈压到主栈stack1中,那么此时主栈中的元素就为{A,B,C,D},其中A为栈底元素,D为栈顶元素。如果此时我们需要删除元素,按照队列先进先出的原则,我们应该删除元素A,但此时元素A位于主...原创 2019-10-04 14:51:29 · 135 阅读 · 0 评论 -
移除字符串中重复的字符
移除字符串的重复字符#include <iostream>using namespace std;int main(){ char str[100]; cin >> str; int len = strlen(str); int i, j, k; for (i = 0; i < len; i++) { fo...原创 2019-10-03 15:04:51 · 129 阅读 · 0 评论 -
查找字符串中第一个出现三次的字符
题目描述:在一个字符串中找到第一个只出现一次的字符。如输入“abaccdeff”,则输出“b”,假设字符集为ASCII。思路:由于ASCII字符是一个长度为8的数据类型,总共有256种可能。先遍历一遍字符串,将每个字母对应的ASCII值作为字符串计数数组的下标,统计每个字符出现的次数。再遍历一遍字符串将第一个计数为3的字符输出。#include <iostream>#inc...原创 2019-10-03 14:20:35 · 2952 阅读 · 1 评论 -
删除字符串中的元音字母
首先,需明白元音字母都有哪些。通常来说,有以下5个元音,即a、e、i、o、u。删除字符串中的元音字母即要求遍历字符串找到元音字母并删除。例如,有个字符串为“Welcome to the world!”,删除元音字母后字符串变为“Wlcm t th wrld!”。最简单方法就是依次遍历每个字符,如果是元音字母,则删除。#include <iostream>using na...原创 2019-10-03 13:49:45 · 3701 阅读 · 0 评论 -
大整数的加减乘除运算
大整数乘法(不考虑负数)#include<iostream>#include<string>using namespace std;int main(){ char str1[100]; cin >> str1; char str2[100]; cin >> str2; int a[100] = ...原创 2019-10-02 15:02:31 · 1787 阅读 · 0 评论 -
删除字符串中多余的空格
题目描述:删除字符串开始及末尾的空格,并且把数组中间的多个空格(如果有)转化为1个。例:输入“ I am a student! ”,输出“I am a student!”。#include <iostream>using namespace std;char* DeleteBlanks(char* str){ int i = 0; ...原创 2019-10-01 22:33:36 · 1004 阅读 · 0 评论 -
字符串中单词的逆转
题目描述:将一个字符串中的单词进行逆转,请注意区分单词的逆转和字符串的逆转。‘例:已知字符串为“I Love China!”,进行单词的逆转后为“China! Love I”。思路:先对整个字符串进行逆转,之后再对每个单词进行逆转。#include <iostream>using namespace std;void Reverse(char* a, char* b)...原创 2019-10-01 17:07:45 · 195 阅读 · 0 评论 -
数组元素交叉排序
题目描述:给定一个数组,要求数组中的最小值放在a[0]中,接着把数组中的最大值放在a[1]中;再把数组元素中的次小值放在a[2]中,把数组元素中的次大值放在a[3],以此类推。例如:若a所指数组中的数据最初排列为:0,9,1,4,2,3,6,5,8,7;按规则移动后,数据排列为:0,9,1,8,2,7,3,6,4,5。#include<stdio.h>#define N 10...原创 2019-10-01 15:38:38 · 708 阅读 · 0 评论 -
字符串转换为数字
声明:题目来源于《王道》问题描述:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如,输入字符串“12345”,输出整数“12345”。解决方法:依次扫描字符串,遇数字就把在之前得到的数字乘以10再加上当前字符串表示的数字。但需考虑特殊情况,即整数可能不仅仅只含有数字,还可能会有“+”、“-”符号来表示数的正负。如果是“+”,则不需要做处理,如果是“-”,则表明此数为负数。接着还要...原创 2019-09-28 21:41:40 · 6226 阅读 · 0 评论