Skip to content

Commit

Permalink
Added code for findng no of homogenous substrings (#146)
Browse files Browse the repository at this point in the history
* Create CountHomogenous.php

Added count no of homogenous substrings

* Added program for finding no. of homogenous substrings

* Update Strings/CountHomogenous.php

Co-authored-by: Brandon Johnson <[email protected]>

* Update Strings/CountHomogenous.php

Co-authored-by: Brandon Johnson <[email protected]>

* Update tests/Strings/StringsTest.php

Co-authored-by: Brandon Johnson <[email protected]>

* Update StringsTest.php

* Update Strings/CountHomogenous.php

Co-authored-by: Brandon Johnson <[email protected]>

* Update tests/Strings/StringsTest.php

Co-authored-by: Brandon Johnson <[email protected]>

* Update CountHomogenous.php

* Update tests/Strings/StringsTest.php

* Update tests/Strings/StringsTest.php

* Fix homogenous count unit test

* Fix count homogenous substrings algorithm

* PHPCBF: remove inline control structure

---------

Co-authored-by: Brandon Johnson <[email protected]>
  • Loading branch information
niharikamahajan02 and darwinz authored Jun 14, 2024
1 parent aa72f55 commit afc6d11
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 0 deletions.
1 change: 1 addition & 0 deletions DIRECTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@
* [Checkpalindrome](./Strings/CheckPalindrome.php)
* [Checkpalindrome2](./Strings/CheckPalindrome2.php)
* [Countconsonants](./Strings/CountConsonants.php)
* [Counthomogenous](./Strings/CountHomogenous.php)
* [Countsentences](./Strings/CountSentences.php)
* [Countvowels](./Strings/CountVowels.php)
* [Distance](./Strings/Distance.php)
Expand Down
32 changes: 32 additions & 0 deletions Strings/CountHomogenous.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

/**
* Count homogenous substrings
* @param String $s
* @return Integer
*/
function countHomogenous($s)
{
// Initialize the count of homogeneous substrings
$count = 0;

// Length of the string
$length = strlen($s);

if ($length == 0) {
return 0; // If the string is empty, return 0
}

// Initialize the count of homogeneous substrings
$count = 1; // Start with 1 since the first character itself starts a substring

// Loop through each character in the string, starting from the second character
for ($i = 1; $i < $length; $i++) {
// Check if current character is not the same as the previous one
if ($s[$i] != $s[$i - 1]) {
$count++; // A new substring starts, increment the count
}
}

return $count;
}
6 changes: 6 additions & 0 deletions tests/Strings/StringsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
require_once __DIR__ . '/../../Strings/CheckPalindrome.php';
require_once __DIR__ . '/../../Strings/CheckPalindrome2.php';
require_once __DIR__ . '/../../Strings/CountConsonants.php';
require_once __DIR__ . '/../../Strings/CountHomogenous.php';
require_once __DIR__ . '/../../Strings/CountSentences.php';
require_once __DIR__ . '/../../Strings/CountVowels.php';
require_once __DIR__ . '/../../Strings/Distance.php';
Expand Down Expand Up @@ -81,6 +82,11 @@ public function testCountConsonants()
$this->assertEquals(7, countConsonants("hello world"));
$this->assertEquals(9, countConsonants("Just A list of somE aaaaaaaaaa"));
}
public function testCountHomogenous()
{
$this->assertEquals(4, countHomogenous("abbcccaa"));
$this->assertEquals(2, countHomogenous("xy"));
}

public function testFindDistance()
{
Expand Down

0 comments on commit afc6d11

Please sign in to comment.