配列と文字列の間の柔軟な運用の10題

48937 ワード

作成関数repeat(char,n)は、繰り返しchar文字列n回を実現します.
例えば、repeat(「★」、6)は「★★★★」に戻ります.
function rev(char,n){
    var arr=""
     for(var i=0;i<n;i++){
      arr=arr.concat(char)
     }//    
     console.log(arr)
   }
//方法二分法、もう持っています.★五角星が4つ現れたら、★を倍にしてもいいです.ですから、どの数字も1、2、4、8、16、32…で構成されています.二進法の事バイナリは、0、1の2つの数字だけで、ビット権の概念:110101 1つの1+0つの2+1つの4+0つの8+1つの16=21
逆に、私達の10進数34は2進数に等しいですか?32+2 1100010、例えば15はいくらですか?8+4+2+11111
//   
 function repeat(char,n){
      var arr=""
      for(var i=0;i<n;i++){
        while(true){
        if(n%2==1){
          arr+=char
        }
        if(n==1){
          break
        }
        n=parseInt(n/2)
        char=char+char
      }
      }
      return arr
    }
2番はコンソールで図形を出力します.
   		 *
  		 ***
		  *****
		 *******
		*********
 function repeat(char,n){
      var arr=""
      for(var i=0;i<n;i++){
        while(true){
        if(n%2==1){
          arr+=char
        }
        if(n==1){
          break
        }
        n=parseInt(n/2)
        char=char+char
      }
      }
      return arr
    }
    var a,b,str
    for(var i=1;i<6;i++){
      a= repeat("*",i*2-1)
      b=repeat(" ",5-i)
      str= b+a
      console.log(str)
    }
3番です
作成関数rev(char)は、文字列charを逆さまにしてrev(「spring」)を「gnirps」に戻すことを実現する.
 function rev(char){
      
      var arr=char.split("")
    arr.reverse()
    arr.join()
    console.log(arr)
    }


function rev(char,n){
    var str=""
    for(var i=char.length-1;i<0;i--){
      str+=char.charAt[i]
      char=str
    }
    return str
  }
4番です
文字列「i come from beijing」を逆さまにして、コンソールから出力された「beijing from come i」の文を直接プログラムに書いて、ユーザーの入力が必要ではありません.
  var str="i come from beijing"
      console.log(typeof(str))
     var arr= str.split(" ");
      console.log(arr)
      arr1=arr.reverse()
      console.log(arr1)
      str1=arr1.join(" ")

      console.log(str1)
5番です
書き込み関数rightchange(char,n)は、文字列charを右にシフトします.例えば、right change(「abcdefg」、2)は「fgabcde」に戻ります.
function rightchange(char,n){
        var str = char;
        var arr=""
        for(var i=0;i<n;i++){
          arr=str.slice(-1)+str.slice(0,str.length-1)
          str=arr;
        }
        console.log(arr)
      }


 function rightchange(char,n){
        var arr = char.split("");
        
        for(var i=0;i<n;i++){
        arr.unshift(arr.pop())
        }
//         console.log(arr)
        return arr.join()
      }



 function rightchange(char,n){
n=n%char.length;
        if(n==0) return char

      var arr= char.substr(-n)+char.substr(0,char.length-n)
       return arr
      }
6番の作成関数maxr(char)は文字列charの中で一番長い連続した反復文字を返します.例えば、maxr(「mmmiijjjjjjjjjkkssptr」)は「kkkkk」に戻ります.
var a=0
          var b=0
          var maxLength=0;
          var maxletter=""
          function maxr(char){
            while(a!=char.length-1){
              if(char.charAt(a)==char.charAt(b)){
                b++;
                console.log(b)
              }else{ 
                if(b-a>maxLength){
                  maxLength=b-a;
                  console.log(maxLength)
                  maxletter=char.charAt(a)
                }
                a++;
                // console.log(a)
                b=a+1
              }
            }
            console.log(maxletter)
          }

7番の学生が10人いますが、成績は群の中にあります.平均成績以上の人数を統計してください.成績は直接的に配列形式でプログラムに書いてあります.ユーザ入力は必要ありません.
var sum=0;
      for(var i=0;i<10;i++){
        var arr=[34,56,23,24,56,67,8,54,54,45]
       sum+=arr[i]
      }
      var average=sum/10
      console.log(average)
      for(var i=0;i<10;i++){
        var arr=[34,56,23,24,56,67,8,54,54,45]
        if(average<=arr[i]){
          console.log(arr[i])
        }
      }
問題8は10人の学生の成績があります.一番高い点数と最低点を統計してください.そして一番高い点数と最低点の学生の下の標的をコントロール台に出力します.
 for(var i=0;i<10;i++){
        var arr=[34,56,23,24,56,67,8,54,54,45]
        arr.sort(function(a,b){
          if(a>b){
            return 1
          }else if(a<b){
            return -1
          }else if(a==b){
            return 0
          }
        })
      }
      console.log(arr[0],arr[9])

var arr=[34,56,23,24,56,67,8,54,54,45]
          var max=0;
          var min=arr[0];
          var maxIndex=0;
          var minIndex=0;
          for(var i=0;i<arr.length;i++){
            if(arr[i]>max){
              max=arr[i]
              maxIndex=i
            }else if(min>arr[i]){
              min=arr[i]
              minIndex=i
            }
          }
          console.log(max,min)
          console.log(maxIndex,minIndex)
第9は株の定理を書きます:直角三角形の中で、2つの直角の辺の平方和、斜辺の平方に等しいです.三辺を探している長さは全部100以下で、三辺の長さは全部整数の可能性があります.コンソールで出力します.
//   
for(var x=1;x<100;x++){
            for(var y=1;y<100;y++){
              for(var z=1;z<100;z++){
                if(x*x+y*y==z*z){
                  console.log(x,y,z)
                }
              }
            }
          }

// A B 
この問題は非常に難しいです.階段を飛び降りないでください.関数maxsame(char 1,char 2)は文字列char 1とchar 2の最大の同じ部分列に戻ります.例えば、maxsame(abcdefghijklmn)、mndefghlm)は「defgh」に戻ります.
	/*  1:     str2        ,       str1    
		        ,        。    js     indexOf()  
		                      。*/
		function check(str1,str2){
			var s;

			var maxlength = 0;	//       
			var maxchar = "";	//      

			//  str2       
			for(var start = 0 ; start <= str2.length ; start++){
				for(var end = start + 1; end <= str2.length; end++){
					//  s           
					s = str2.substring(start,end);
					//   s    str1 
					if(str1.indexOf(s) != -1 && s.length > maxlength){
						//       ,             s   
						maxlength = s.length;
						//              
						maxchar = s;
					}
				}
			}
			return maxchar;
		}
//  2:     4   ,     ,   js  indexOf  。
		//c   ,  indexOf    ,                          
		//c   ,       4   。
	function check(str1,str2){
			//    
			var a = 0;
			var b = 1;
			var c = 0; 
			var d = 1;

			var maxlength = 0;
			var maxchar = "";
			
			while(true){
				if(str1.charAt(a) != str2.charAt(c)){
					//  a、c     ,  c、d  
					c++;
					d++;
				}else{
					//a、c  
					while(true){
						if(str1.charAt(b) == str2.charAt(d)){
							b++;
							d++;
							if(b - a > maxlength){
								maxlength = b - a;
								maxchar = str1.substring(a,b);
							}
						}else{
							c = 0;
							d = 1;
							a++;
							b = a + 1;
							break;
						}
						//  
						if(b >= str1.length || d >= str2.length){
							//  c、d   ,  c、d  ,a  
							break;
						}
					}
				}

				//  ,c、d     ,  cd  
				if(c >= str2.length || d >= str2.length){
					//  c、d   ,  c、d  ,a  
					c = 0;
					d = 1;
					a++;
					b = a + 1;
				}

				//  
				if(a >= str1.length){
					break;
				}
			}

			return maxchar;
		}
11番は「i love javascript cai gai」の各単語の最初の文字を大文字にします.
答え:
var arr = "i love javascript cai guai".split(" ");
for(var i = 0 ; i < arr.length ; i++){
    arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substr(1);
}
arr.join(" ");