>>608
PowerShell

function f($s)
{
  -join $(
    foreach ($i in 0..($s.length - 2)) {
      $s[$i]
      if ($s[$i] -ne $s[$i + 1]) {continue}
      if ($s[$i] -lt [char]"A" -or $s[$i] -gt [char]"Z") {continue}
      ([string]$s[$i]).ToLower()
    }
    $s[$i + 1]
  )
}

"abcDDefGG", "abcDDDfGG" |% {"$_ → $(f $_)"}

[実行結果]
abcDDefGG → abcDdDefGgG
abcDDDfGG → abcDdDdDfGgG