算法竞赛入门 -数数字
introduce
把前n(n<=1000)个整数顺次卸载一起:12345678.。数一数0—9各出现了多少次,输出10个整数,分别是0,1,2,3.。。9出现的次数
随便扯扯
不是个专门ac的人,只是无聊刷刷题,也没有特地去网站编译通过,只是看了下结果差不多。就算自己闲的无聊瞎写的吧
Code
- c++
#include<iostream>
using namespace std;
int main() {
int arr[10];
memset(arr, 0, sizeof(arr));
string s;
cout << "请输入一个字符串" << endl;
cin >> s;
for (int i = 0, len = (int)s.length(); i != len; i++) {
int temp = int(s[i] - '0');
if (temp < 0 || temp > 9) {
cout << "有错误,直接退出" << endl;
return -1;
}
arr[temp] ++;
}
for (int i = 0; i != 10; i ++) {
cout << arr[i] << " " ;
}
return 0;
}
- js
// for
function calculate1(str) {
var arr = [10];
for (var i = 0; i != 10; i++) {
arr[i] = 0;
}
for (var i = 0, j = str.length; i != j; i++) {
var temp = parseInt(str[i]);
if (temp >= 0 && temp <= 9) {
arr[temp]++;
} else {
console.log("数组有错误")
}
}
console.log("最简单的for循环");
console.log(arr);
}
calculate1('12325a664533');
// foreach split parseInt
function calculate2(str) {
var countnum = new Array(10).fill(0);
var arr = str.split('');
arr.forEach(element => {
var ele = parseInt(element);
if (ele >= 0 && ele <= 9) {
countnum[ele]++
} else {
console.log("数据有错误");
}
});
console.log("用了es6部分语法");
console.log(countnum);
}
calculate2('12325a664533');
// let => Array.from Number map
let calculate3 = str => {
var countnum = new Array(10).fill(0);
let arr = Array.from(str);
arr.map(item => {
var temp = Number(item);
if (temp >= 0 && temp <= 9) {
countnum[temp]++;
} else {
console.log("数组有错误");
}
})
console.log(countnum);
}
calculate3('12325a664533');
// for in charCodeAt
let calculate4 = str => {
var countnum = new Array(10).fill(0);
let arr = Array.from(str);
for (var i in arr) {
var temp = arr[i].charCodeAt() - 48;
if (temp >= 0 && temp <= 9) {
countnum[temp]++;
} else {
console.log("数组有错误");
}
}
console.log(countnum);
}
calculate4('12325a664533');
// for of values
let calculate5 = str => {
var countnum = new Array(10).fill(0);
let arr = Array.from(str);
for (var i of arr.values()) {
var temp = Number(i);
if (temp >= 0 && temp <= 9) {
countnum[temp]++;
} else {
console.log("数组有错误");
}
}
console.log(countnum);
}
calculate5('12325a664533');
// filter let
let calculate6 = str => {
var countnum = new Array(10).fill(0);
let arr = Array.from(str);
for (let i = 0; i != 10; i++) {
let arr1 = arr.filter(item => {
temp = parseInt(item);
return (temp == i);
})
countnum[i] = arr1.length;
}
console.log("这种方式不加额外的判断是不能发现错误的");
console.log(countnum);
}
calculate6('1211325a664533');
// find
function finidx(arr, val) {
var x = arr.findIndex(function (value, index, arr) {
return value == val;
})
return x;
}
let calculate7 = str => {
var countnum = new Array(10).fill(0);
let arr = Array.from(str);
// console.log(finidx(arr,1));
for (let i = 0; i != 10; i++) {
while (finidx(arr, i) != -1) {
countnum[i]++;
arr.splice(finidx(arr, i), 1);
}
}
console.log("这是用find来迭代");
console.log(countnum);
}
calculate7('1211325a664533');
//some
let calculate8 = str => {
var arr = Array.from(str);
var countnum = new Array(10).fill(0);
for (let i = 0; i != 10; i++) {
var temparr = str.split(i).join("").length;
countnum[i] = arr.length - temparr;
}
console.log("这是裁剪字符串,然后计算相差的长度");
console.log(countnum);
}
calculate8('1211325a664533');
Writer&Contact
{
"name":"Jontyy" ,
"email": " jontyy@163.com",
"gitHub" : "https://github.com/YJD199798/jontyy-ac"
}