JavaScript字符串练习

题目:

1. 找出字符串中出现次数最多的字母

 1 // 找出字符串中出现次数最多的字母:
 2 function func(str) {
 3     var arr = {};
 4     // 把每个字母和其对应出现的次数存到对象(字典)中
 5     for (var i = 0; i < str.length; i++) {
 6         if (arr[str[i]] === undefined){
 7             arr[str[i]] = 1
 8         }
 9         else{
10             arr[str[i]] += 1
11         }
12     }
13     var max = 0;
14     var chart = "";
15     for(var s in arr){
16         var num = arr[s];
17         if(num>max){
18             max = num;
19             chart = s;
20         }
21     }
22     console.log(arr);
23     console.log(chart.toString()+max.toString());
24 
25     res = chart.toString()+max.toString();
26 
27     return res
28 }
29 result = func("WelcomeToQianfeng");


 1 // 分割单词
 2 var str2={};
 3 function word(str1){
 4     for(var i=1;i<str1.length;i++){
 5         // 思路: 在第一个字母之后 如果发现有大写字母后面是小写字母 就把这个大写字母换成空格和这个大写字母
 6         // 检测是否为大写字母
 7         if(/[A-Z]/g.test(str1[i])){
 8             // 检测是否是小写字母
 9             if(/[a-z]/g.test(str1[i-1])){
10                 str1=str1.replace(str1[i], " "+str1[i]);
11             }
12         }
13     }
14     // str2是str1的子串(str1第一个字符之后的子串)
15     str2=str1.substring(1);
16     console.log(str1[0]+str2.toLowerCase());
17 
18     return str1[0]+str2.toLowerCase();
19 }
20 
21 result = word("HelloMyWorld");


 1 // 单词逆序
 2 // Welome to Beijing -> Beijing to Welcome
 3 // 思路: 先将字符串分割成一个个的词,然后将这些词存入数组中并逆序,最后连接起来即可
 4 var arr=[];
 5 var str3="Welome to Beijing";
 6 arr=str3.split(" ");
 7 var str4=arr.reverse();
 8 var res = str4.join(" ");
 9 console.log(arr);
10 console.log(res);


 1 // 作业 1
 2 // 字符串s1和字符串s2  但 s2 的长度是 1  返回 s2 在 s1 中的下标, 从 0 开始, 如果不存在则返回 -1
 3 var find = function(s1, s2) {
 4     var len = s1.length;
 5     if(s1.includes(s2)) {
 6         for (var i = 0; i < len; i++) {
 7             var str = s1[i];
 8             if (str === s2) {
 9                 //log("i 的值:",i)
10                 return i
11             }
12         }
13     }
14     // log(-1)
15     return -1
16 };





// 作业2-1
// 返回字符串的小写形式的函数 注意, 这里假设了字符串全是大写字母
// 这里是两个字符串, 包含了大写字母和小写字母
var lower = 'abcdefghijklmnopqrstuvwxyz';
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

var lowercase = function(s) {
// 初始化一个空字符串
var result = "";
for (var i = 0; i < s.length; i++) {
// 注意, 这个 find 是你要实现的函数
var index = find(upper, s[i]);
// 字符串可以用加号拼接, 不明白可以 log 一下
result += lower[index];
}
return result;
};

// var test_lowercase = function() {
// ensure(lowercase('SDEW') === 'sdew','测试1失败')
// };
// test_lowercase();


// 作业 2-2
// 定义一个函数 参数是一个字符串 返回大写后的字符串 注意字符串全是小写字母
var lower = 'abcdefghijklmnopqrstuvwxyz';
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

var uppercase = function(s) {
var result = "";
for (var i = 0; i < s.length; i++) {
var index = find(lower,s[i]);
result += upper[index]
}
return result
};

// var test_uppercase = function() {
// ensure(uppercase('sdwt') === 'SDWT','测试1失败')
// };
// test_uppercase();


// 作业 3
// 实现 lowercase1 它能正确处理带 小写字母 的字符串s 返回 小写字母 的字符串
var lower = 'abcdefghijklmnopqrstuvwxyz';
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var lowercase1 = function(s) {
var result = "";
var len = s.length;
for (var i = 0; i < len; i++) {
if (upper.includes(s[i])) {
var index = find(upper,s[i]);
result += lower[index]
//log(result)
}else {
result += s[i]
//log(result)
}
}
return result
};

// var test_lowercase1 = function() {
// ensure(lowercase1('dadEG') === 'dadeg','测试1失败');
// ensure(lowercase1('wWedaaLo') === 'wwedaalo','测试2失败');
// };
// test_lowercase1();


// 作业 4
// 实现 uppercase1 它能正确处理带 大写字母 的字符串 返回 大写字母 的字符串
var uppercase1 = function(s) {
var result = "";
var len = s.length;
for (var i = 0; i < len; i++) {
if (lower.includes(s[i])) {
var index = find(lower,s[i]);
result += upper[index];
// log(result)
}else {
result += s[i];
// log(result)
}
}
return result
};

// var test_uppercase1 = function() {
// ensure(uppercase1('dadEG') === 'DADEG','测试1失败');
// ensure(uppercase1('wWedaaLo') === 'WWEDAALO','测试2失败');
// };
// test_uppercase1();


// 作业 5
// 实现一个叫 凯撒加密 的加密算法, 描述如下:
// 对于一个字符串, 整体移位, 就是加密
// 以右移 1 位为例 原始信息 'afz' 会被加密为 'bga'
// 实现 encode1 函数, 把明文加密成密码并返回 右移 1 位
// 注意, 假设字符串一定只包含小写字符
var lower = 'abcdefghijklmnopqrstuvwxyz';
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var encode1 = function(s) {
var result = "";
var len = s.length;
for (var i = 0; i < len; i++) {
var sl = s[i];
var index = find(lower,s[i]);
if (s[i] === 'z') {
result += lower[0]
}else {
result += lower[index+1]
}
}
return result
};

// var test_encode1 = function() {
// ensure(encode1('afz') === 'bga', "encode1测试1");
// ensure(encode1('crp') === 'dsq', "encode1测试2");
// };
// test_encode1();


// 作业 6
// 实现 decode1 函数, 把作业 5 加密的密码解密为明文并返回
var decode1 = function(s) {
var result = "";
var len = s.length;
for (var i = 0; i < len; i++) {
var index = find(lower,s[i]);
if (s[i] === lower[0]) {
result += lower[25]
}else {
result += lower[index-1]
}
}
return result
};

// var test_decode1 = function() {
// ensure(decode1('bga') === 'afz', "decode1测试1");
// ensure(decode1('dsq') ==='crp', "decode1测试2");
// };
// test_decode1();


// 作业 7
// 实现 encode2 相比encode1多了一个参数 shift 表示移的位移
var lower = 'abcdefghijklmnopqrstuvwxyz';
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var encode2 = function(s, shift) {
var result = "";
var len = s.length;
for (var i = 0; i < len; i++) {
var sl = s[i];
var index = find(lower,s[i]);
if (index + shift >= 26) {
result += lower[index + shift - 26]
}else {
result += lower[index + shift]
}
}
return result
};

// var test_encode2 = function() {
// ensure(encode2('afz',1) === 'bga', "encode2测试1");
// ensure(encode2('mxc',5) === 'rch', "encode2测试2");
// };
// test_encode2();


// 作业 8
// 实现 decode2 相比decode1多了一个参数 shift 表示移的位数
var decode2 = function(s, shift) {
var result = "";
var len = s.length;
for (var i = 0; i < len; i++) {
var index = find(lower,s[i]);
if (index - shift < 0) {
result += lower[index - shift + 26]
}else {
result += lower[index - shift]
}
}
return result
};

// var test_decode2 = function() {
// ensure(decode2('afz',1) === 'zey', "decode2测试1");
// ensure(decode2('mxc',5) === 'hsx', "decode2测试2");
// };
// test_decode2();

/*
作业 9
实现 encode3
多了一个参数 shift 表示移的位数
如果 s 中包含了不是字母的字符, 比如空格或者其他符号, 则对这个字符不做处理保留原样
*/
var encode3 = function(s, shift) {
var str = lowercase1(s);
var result = "";
var len = s.length;
for (var i = 0; i < len; i++) {
if (lower.includes(str[i])) {
result += encode2(str[i],shift)
}
else {
result += str[i]
}
}
return result
};

// var test_encode3 = function() {
// ensure(encode3('5465WD4afz',1) === '5465xe4bga', "encode3测试1");
// ensure(encode3(' 5~m@365!xc',5) === ' 5~r@365!ch', "encode3测试2");
// };
// test_encode3();


/*
作业 10
实现 decode3
多了一个参数 shift 表示移的位数
如果 s 中包含了不是字母的字符, 比如空格或者其他符号, 则对这个字符不做处理保留原样
*/
var decode3 = function(s, shift) {
var str = lowercase1(s);
var result = "";
var len = str.length;
for (var i = 0; i < len; i++) {
if (lower.includes(str[i])) {
result += decode2(str[i],shift)
}
else {
result += str[i]
}
}
return result
};

// var test_decode3 = function() {
// ensure(decode3('W2玩儿3af$%(SD)z',1) === 'v2玩儿3ze$%(rc)y', "decode3测试1");
// ensure(decode3('mW嗲2+*/.,xDW3c',5) === 'hr嗲2+*/.,syr3x', "decode3测试2");
// };
// test_decode3();

猜你喜欢

转载自www.cnblogs.com/wyb666/p/9371024.html