-1

文字列内の2つの隣接する文字を見つける方法は?隣接する文字の検索では、私が定義した文字のセットのみを考慮する必要があります。

この関数を使用して問題を解決しました:

unsigned checkField (myset string, char mychar)
 {
  unsigned counter;

  for (counter = 0; counter <= myset.length () - 1; counter + +)
    if (myset [counter] == mychar)
     return 1;

  return 0; / * NOT FOUND * /
 }

将来誰かに役立つかもしれません

4

3 に答える 3

3

boostを使用しても問題がなく、究極の効率を必要としない場合は、 などの正規表現を使用するのが最も簡単な方法かもしれません"([abcd])\\1"。ブースト正規表現を使用した文字列の照合の詳細については、ブースト正規表現のドキュメントを参照してください。

于 2012-05-24T01:39:13.017 に答える
0

ある時点で方程式の各部分を別々に保存していると思いますか? 例えば。"55" "+" "hh" "+" "bc" ? この場合、sizeof が 1 であることを確認し、そうでない場合はエラーを送信するだけでは不十分でしょうか? 何かが足りない場合は申し訳ありません!それ以外の場合は、Edward が提案した (+1) 正規表現が最も適切と思われます。

編集:また、もちろん、文字が上部で指定したものであるかどうかを確認するのは簡単です。

于 2012-05-24T01:57:09.680 に答える
0

いくつかの簡単なコード:

#include <cstdio>
#include <cstdlib>
#include <cstring>

const char* find_adjacent_string(const char* str, const char* set)
{
    const char* loc = NULL;

    if(set != NULL)
    {
        int size = strlen(set);

        char adj[3];
        adj[2] = '\0';

        for(int i = 0; i + 1 < size; i++)
        {
            adj[0] = set[i];
            adj[1] = set[i + 1];
            loc = strstr(str, adj);
            if(loc != NULL)
            {
                break;
            }
        }
    }

    return loc;
}

int main()
{
    const char* myset = "pl";
    const char* mystr = "apple";

    printf("found at %i\n", find_adjacent_string(mystr, myset) - mystr);

    return 0;
}
于 2012-05-24T02:00:21.183 に答える