PHP Strings Processing a String One Byte at a Time - Web Development and Design | Tutorial for Java, PHP, HTML, Javascript PHP Strings Processing a String One Byte at a Time - Web Development and Design | Tutorial for Java, PHP, HTML, Javascript

Breaking

Post Top Ad

Post Top Ad

Tuesday, May 7, 2019

PHP Strings Processing a String One Byte at a Time

PHP Strings




Processing a String One Byte at a Time


Problem

You need to process each byte in a string individually.


Solution

Loop through each byte in the string with for.

Example  Processing each byte in a string

        $string = "This weekend, I'm going shopping for a pet chicken.";
        $vowels = 0;
        for ($i = 0, $j = strlen($string); $i < $j; $i++) {
        if (strstr('aeiouAEIOU',$string[$i])) {
        $vowels++;
        }
        }


Discussion

Processing a string a character at a time is an easy way to calculate the “Look and Say”
sequence

Example  The Look and Say sequence

         function lookandsay($s) {
              // initialize the return value to the empty string    
              $r = '';
              // $m holds the character we're counting, initialize to the first
              // character in the string
              $m = $s[0];
              // $n is the number of $m's we've seen, initialize to 1
              $n = 1;
              for ($i = 1, $j = strlen($s); $i < $j; $i++) {
                    // if this character is the same as the last one
                    if ($s[$i] == $m) {
                    // increment the count of this character
                       $n++;
                    } else {
                          // otherwise, add the count and character to the return value
                          $r .= $n.$m;
                          // set the character we're looking for to the current one
                          $m = $s[$i];
                          // and reset the count to 1
                          $n = 1;
                    }
                }
              // return the built up string as well as the last count and character
                 return $r.$n.$m;
                    }
              for ($i = 0, $s = 1; $i < 10; $i++) {
                    $s = lookandsay($s);
                    print "$s\n";
                }

Example  prints:

               1
               11
               21
               1211
               111221
               312211
               13112221
               1113213211
               31131211131221
               13211311123113112211

It’s called the “Look and Say” sequence because each element is what you get by looking
at the previous element and saying what’s in it. For example, looking at the first element, 1, you say “one one.” So the second element is “11.” That’s two ones, so the third element is “21.” Similarly, that’s one two and one one, so the fourth element is “1211,” and so on.

No comments:

Post a Comment

Post Top Ad