这些题目是我22年秋招时笔试遇到的一些编程题,发出来给后面找工作的朋友练练手,代码写的不好请大家多多指正,一起寻找最优解。
【字母出现次数】
有一个字符串,找出并输出出现次数不小于2次的字母。
输入描述:一个仅包含小写字母的字符串,长度不超过1000。
输出描述:一个字符串,为原串中出现次数不小于2次的字母集合,你可以用任意顺序输出这些字母。
示例:
输入:abcaba
输出:ab或者ba
let s = 'abcaaba';
let result = '';
if(!/^[a-z]+$/.test(s) || s.length > 1000) {
console.log("输入中有大写或字符串长度超过1000!");
} else {
for(let i = 0; i < s.length - 1; i++) {
let count = 1;
if(result.indexOf(s[i]) != -1) {
continue;
}
for(let j = i + 1; j < s.length; j++) {
if(s[i] == s[j]) {
count++;
if(count >= 2) {
result = result.concat(s[i]);
break;
}
}
}
}
console.log(result)
}
【字母大小写切换】
有一个字符串,我们希望把其中的元音字母都变成小写,辅音字母都变成大写。元音字母有‘a’, 'e', 'i', 'o', 'u'。
输入描述:一个只包含大小写字母的字符串。长度不超过200000。
输出描述:处理后的字符串。
示例:
输入:AGfaeGUh
输出:aGFaeGuH
let s = 'AGfaeGUh';
let c = '';
if(/^[a-zA-Z]+$/.test(s) && s.length <= 200000) {
for(let i = 0; i < s.length; i++) {
if(s[i].match(/^[aeiouAEIOU]$/)) {
c = s[i];
s = s.replace(c, c.toLowerCase());
} else {
c = s[i];
s = s.replace(c, c.toUpperCase());
}
}
console.log(s)
} else {
console.log("输入中包含了除大小写以外的东西或者字符串长度超过200000!");
}
【矩阵翻转】
有一个n行n列的矩阵,要将矩阵水平方向和垂直方向各翻转一次,将翻转后的矩阵输出。
输入描述:第一行输入一个正整数n,代表矩阵的行数和列数。接下来的n行,每行输入n个正整数,用来表示矩阵。1 <= n <= 100
输出描述:翻转后的n行,每行有n个正整数的矩阵。
示例:
let n = 3;
let m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
for(let i = 0; i < n; i++) {
for(let j = 0; j < n / 2; j++) {
let temp = 0;
temp = m[i][j];
m[i][j] = m[i][n - j - 1];
m[i][n - j - 1] = temp;
}
}
for(let i = 0; i < n / 2; i++) {
let temp = 0;
temp = m[i];
m[i] = m[n - i - 1];
m[n - i - 1] = temp;
}
console.log(m[0]);
console.log(m[1]);
console.log(m[2]);