2017-08-19 7 views
1

ここにPHPの質問があります。私は2つの入力を持っています($ s、$ n)、$ sは文字列を表し、$ nは整数です。そして、質問は "$ s $ nの位置で各文字をシフトする"です。'Y'と++のPHP文字のインクリメント2回

例えば$ S = "AA"、$ N = 2、出力は "CC" である

私は$ S = "YY" 場合は、ここで少し問題を抱えている$ N = 2、それの出力は以下となります"aaaa"、しかしI

出力を "aa"にしたいのですが、コードを修正するにはどうすればよいですか?以下

私のコードです:

$words = str_split($s);    

for($i=0;$i<count($words);$i++){ 

    if($words[$i] == " ") { 
    //if space 
    continue; 
    }      
    else{ 
    for($y=0;$y<$n;$y++) 
     $words[$i] = ++$words[$i];     
    }  
} 

$ans = join("", $words); 

print("$ans\n"); 

どうもありがとうございました。

+1

は '私がWölf'よ? – chris85

答えて

0

この解決策は100%ではないかもしれません。または、より良い解決策があるかもしれません。長さが元の長さ

<?php 
$s = "YY"; 
$n = 2; 
$words = str_split($s);    
for($i=0;$i<count($words);$i++){ 

    if($words[$i] == " ") { 
    //if space 
    continue; 
    }      
    else{ 
    for($y=0;$y<$n;$y++){ 
     $cur_len = strlen($words[$i]); 
     $words[$i] = ++$words[$i]; 
     $new_len = strlen($words[$i]); 
     if($new_len > $cur_len) 
     $words[$i] = substr($words[$i], 0,$cur_len);  
    } 
    }  
} 

$ans = join("", $words); 

print("$ans\n"); 
0

以上であればしかし、私は、文字列から部分を取得しようとしている2でYをインクリメントするとき、あなたがAAを取得した理由は、それが数のようにそれを治療していることです。従って(例えば)9 + 1 = 10であるので、桁上げのための余分な数字がある。 YYの各桁をインクリメントすると、AAを持つ2つの要素、つまりAAAAの出力が得られます。

あなただけの最後の数字をしたい場合

...文字列があった場合に期待されている何

$s = "YY"; 
$n=2; 
$words = str_split($s); 

for($i=0;$i<count($words);$i++){ 
    if($words[$i] != " ") { 
     for($y=0;$y<$n;$y++) { 
      $words[$i]++; 
     } 
     $words[$i]= substr($words[$i],-1); 
    }  
} 

$ans = join("", $words); 

print("$ans\n"); 
関連する問題