Program to Reverse an array without affecting special characters in C++
using namespace std;
bool isAlphabet(char x)    // Function returns true if an alphabet
{
    return ( (x >= 'A' && x <= 'Z') ||
            (x >= 'a' && x <= 'z') );
}
void reverse(char str[])
{
    int right = strlen(str) - 1, left = 0;  //Initialize left and right pointers
    while (left < right)  //Traverse from both ends until left is greater then right
    {
        if (!isAlphabet(str[left]))  //To ignore special characters
            left++;
        else if(!isAlphabet(str[right]))
            right--;
        else      // Both str[left] and str[right] are not special then swap elements of left and right
        {
            char s = str[left];
            str[left] = str[right];
            str[right] = s;
            left++;
            right--;
        }
    }
}
int main()
{
    char str[] = "a!!!b.c.d,e'f,ghi";
    cout << "Input string: " << str << endl;
    reverse(str);
    cout << "Output string: " << str << endl;
    return 0;
}
Output:
Input string: a!!!b.c.d,e'f,ghi
Output string: i!!!h.g.f,e'd,cba
                       
                    
0 Comment(s)