conversion

简单说就是将字符串打乱然后排序,说到这里,这个不是密码学了吗?做的时候都没有发现唉!

原题目链接

对了我依然还是贴上typescript的代码,其实我的思路错了,不应该使用这个方法的,应该有更简单的方法。但是也算是勉强解决了,就是逻辑更加困难了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* Created by YangSir on 2016/11/5.
*/

class Ctr{
Flag:number;
flag:number;
x:number;
y:number;
constructor(){
this.Flag = 0;
this.flag = 1;
this.x = 0;
this.y = 0;
}
concon(){
this.flag = (++this.flag)%2;
}
con(n){
if((this.Flag!=0)&&this.Flag%(n-1)==0){
this.concon();
}
this.Flag++;
return this.fn();
}
fn(){
switch(this.flag){
case 1: this.x++;break;
case 0: this.y++;this.x--;break;
}
return {
x: this.x,
y: this.y
};
}
}
var convert = function(str, n){
var ctr = new Ctr();
var Srr = str.split("");
var Arr = [];
var Brr = [];
for(var i = 0;i < n; i++){
Arr.push([]);
}
Arr[0][0] = Srr[0];
for(var j = 1,len = str.length; j < len; j++){
var ob = ctr.con(n);
Arr[ob.x][ob.y] = Srr[j];
}
for(var k = 0,LenA = Arr.length; k<LenA; k++){
for(var p = 0,LenB = Arr[k].length; p<LenB; p++){
if(Arr[k][p]){
Brr.push(Arr[k][p]);
}
}
}
var Str = Brr.join("");
console.log(Str);
return Str;
};
//convert("PAYPALISHIRING",3);
convert("AB",1);