题目总结
1.
给你一个仅由数字组成的字符串 s
,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的
字典序最小的字符串
。
如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5 和 9、2 和 4 奇偶性相同,而 6 和 9 奇偶性不同。
示例 1:
输入: s = "45320"
输出: "43520"
解释:
s[1] == '5'
和 s[2] == '3'
都具有相同的奇偶性,交换它们可以得到字典序最小的字符串。
class Solution {
public:
string getSmallestString(string s) {
for (int i = 1; i < s.length(); i++) {
char x = s[i - 1], y = s[i];
if (x > y && x % 2 == y % 2) {
swap(s[i - 1], s[i]);
break;
}
}
return s;
}
};
题目要求,交换的数字必须相邻,且具有相同的奇偶性,直接按照题目要求模拟可得
2.
给你一个字符串 s
和一个整数 k
。请你使用以下算法加密字符串:
- 对于字符串
s
中的每个字符c
,用字符串中c
后面的第k
个字符替换c
(以循环方式)。
返回加密后的字符串。
示例 1:
输入: s = "dart", k = 3
输出: "tdar"
解释:
- 对于
i = 0
,'d'
后面的第 3 个字符是't'
。 - 对于
i = 1
,'a'
后面的第 3 个字符是'd'
。 - 对于
i = 2
,'r'
后面的第 3 个字符是'a'
。 - 对于
i = 3
,'t'
后面的第 3 个字符是'r'
。class Solution {
public:
string getEncryptedString(string s, int k) {
k %= s.length();
return s.substr(k) + s.substr(0, k);
}
};
由示例可得,先将k个字符后的字符提前,在加上从0到k个字符即为答案
3.你两个整数
red
和blue
,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行有 1 个球,第 2 行有 2 个球,第 3 行有 3 个球,依此类推。每一行的球必须是 相同 颜色,且相邻行的颜色必须 不同。
返回可以实现的三角形的 最大 高度。
示例 1:
输入: red = 2, blue = 4
输出: 3
解释:
上图显示了唯一可能的排列方式。
class Solution {
public:
int maxHeightOfTriangle(int red, int blue) {
int cnt[2]{};
for (int i = 1; ; i++) {
cnt[i % 2] += i;
if ((cnt[0] > red || cnt[1] > blue) && (cnt[0] > blue || cnt[1] > red)) {
return i - 1;
}
}
}
};
java总结
多态方便维护代码,在定义方法时,使用父类作为对象,可以接收所有子类对象,但是不能调用子类特有的方法
多态的表现形式为:
父类对象 对象名称 =子类对象。
多态的前提:
要有继承和实现关系。
父类引用指向子类对象
有方法重写
调用成员变量
编译看左边,运行看左边
在编译时,会看左边的父类中有没有这个变量,如果有编译成功,如果没有编译失败。
运行时实际获取的就是左边父类中成员变量的值
调用成员方法
编译看左边,运行看右边
编译代码时,会看左边父类中有没有这个方法,如果有编译成功,如果没有编译失败。
运行代码实际上运行的是子类中的方法