运用C语言解决,最好有注释

loop他只有两个o,他想让自己的o变得多一点,所以他去学了一种魔法,现在的他可以把l变成一个o,把p变成两个o,把lp变成4个o。

o变多了的loop依旧很菜,他不知道他最多能有多少o,你能帮他算出来吗?

Input
多组输入,每行一个只包含l,o,p的字符串,每行长度不超过1e4。

Output
每行字符串输出一行代表该字符串最多能有多少o

SampleInput
loop
lpoo
SampleOutput
5
6

试验可用!有疑问追问,没问题采纳


#include <stdio.h>
#include <stdlib.h>
#define LEN 10   //设置每行长度
#define ROW 2    //设置行数

int main()

{
    int i = 0;
    int j = 0;
    int count[ROW] = { 0 };  //用来记录每行出现o的数量
    char arr[ROW][LEN] = { 0 };  //定义一个字符二维数组用来存放输入的字符串
    for(j=0;j<ROW;j++)
    {
        scanf("%s", &arr[j]);  // 按 空格 区分字符串
    }
    for (j = 0; j < ROW; j++)
    {
        for (i = 0; i < LEN; i++)
        {
            if (arr[j][i]=='l')
            {
                if (arr[j][i + 1] == 'p')
                {
                    count[j] += 4;  //统计出现l且下一个字符是p时  增加 4个o
                    i++; //跳过下一个p
                }
                else
                {
                    count[j]++;
                }
            }
            else if (arr[j][i] == 'o')
            {
                count[j]++;
            }
            else if (arr[j][i] == 'p')
            {
                count[j]+=2;
            }
            if (arr[j][i] == '\0')
            {
                break;
            }
        }
        printf("%d\n", count[j]);
    }
    return 0;
}

img


unsigned int get_count(char * str, unsigned int str_len)
{
  int flag = 0;
  unsigned int count = 0;
  for(int i = 0; i < str_len; i++){
    if(str[i] == 'l') {
      count++;
      flag = 1;
    } else if(str[i] == 'p') {
      count +=2;
      if(flag == 1){
        count++;
      }
      flag = 0;
    } else {
      count++;
      flag = 0;
    }
  }
  return count;
}