L1-010 比较大小
判断顺序很重要
#include<iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a >> b >> c;
int temp;
if (a > b) {
temp = a;
a = b;
b = temp;
}
if (a > c) {
temp = a;
a = c;
c = temp;
}
if (b > c) {
temp = b;
b = c;
c = temp;
}
cout << a << "->" << b << "->" << c;
}
L1-011 A-B
C++
这道题用C++写尝试了蛮多方法,但是不管是删除字符串中指定字符还是删除字符数组中指定元素都比较麻烦
所以我采用动态数组,并且利用了其自带的删除函数,但是有几个点要注意下
1.采用v.begin()和v.end()函数得到的都是迭代器,也就是指针,需要取地址才能得这个位置正确的值
2.使用erase()后原有的迭代器会失效,该函数返回值是删除的位置的下一个迭代器的值,所以我们只要将下一个迭代器的值赋值给当前迭代器就可以成功删除了
3.可以巧妙的利用auto类型定义变量
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
string a, b;
getline(cin, a);
getline(cin, b);
vector<char>a1;
for (int i = 0; a[i] != '\0'; i++) {
a1.push_back(a[i]);
}
for (int i = 0; b[i] != '\0'; i++) {
for (auto j = a1.begin(); j != a1.end() ; ) {
if (*j == b[i]) {
j = a1.erase(j);
}
else
j++;
}
}
for (auto i = a1.begin(); i != a1.end(); i++) {
cout << *i;
}
}
python
这里被注释掉的代码对于测试点1和3会运行超时,因为pop每一次只删除第一个,当数据很大时,循环次数过多,时间复杂度太大
replace函数
语法:字符串.repalce(char1,char2,int)
char1:旧的字符
char2:新的字符
int:替换个数(默认替换所有)
注意:replace会产生一个新的字符串,所以要将新的字符串赋值给旧的字符串才能正确替换,不然是无效的
# A-B
"""
a = str(input())
a_list = list(a)
b = str(input())
for j in range(0, len(b)):
i = b[j]
while i in a_list:
a_list.pop(a_list.index(i))
a = ''.join(a_list)
print(a)
"""
a = str(input())
b = str(input())
for i in b:
a = a.replace(i, '')
print(a)