ALLAN AVELARTechnology Solutions
🍰Bon Après-midi,<username class="jsx-1036735364">Visiteur</username>!Bienvenue sur mon website!Appli Web Progressive (PWA)Installer sur votre appareilChromecast Controlsstatus: not playing or showingVolumeDown50%VolumeUpPlayPausestoppedStopResetFullscreenExpandAccès RestreintSe Connecter / S'inscrireSaisissez vos identifiants d'accèsObtenir Accès RestreintDemandez votre Code D'accèsDonnées d'enregistrementVos données personnelles et d'accèsProjets / ServicesVotre historique d'embaucheProduits / TéléchargementsVotre historique d'achatChromecast AppsVos contrats de streamingCrédits / AchatsVotre historique de créditEspace d'AccèsVos accès aux contenus restreintsNotificationsNotifications activées pour vousDéconnecterDéconnectez votre utilisateurContenu disponibleHomeSur moi6Résumé PersonnelVos données personnelles et d'accèsRésumé ProfessionnelUn peu sur ma trajectoireMéthodologie de travailComment je le réaliseMémoires PersonnellesContenu RestreintCurriculum VitaeContenu RestreintVoyages & PhotosContenu RestreintDomaines de Pratique10Toutes mes prestationsRésumé de tous les domainesCTO as a ServiceAvoir un C-Level à mi-tempsCorporate ArchitectureAgility and technology as a philosophySoftware & TechnologyBientôt disponibleFrontend DevelopmentBientôt disponibleBackend DevelopmentBientôt disponibleStrategy & ConsultingBientôt disponiblePlatform & DevSecOpsBientôt disponibleCustomer ExperienceBientôt disponibleAgile CultureBientôt disponibleCentre d'Innovation6Culture de l'innovationAvantages et comment se développerDistributed LT & BlockchainBientôt disponibleData Science & AnalyticsBientôt disponibleCybersecurity PlatformBientôt disponibleIntelligent AutomationBientôt disponibleAI & Machine LearningBientôt disponibleCours & Formation9Distributed LT & BlockchainBientôt disponibleCybersecurity PlatformBientôt disponibleIntelligent AutomationBientôt disponibleFrontend DevelopmentBientôt disponibleBackend DevelopmentBientôt disponiblePlatform & DevSecOpsBientôt disponibleAI & Machine LearningBientôt disponibleProgressive Web AppsBientôt disponibleAgile CultureBientôt disponibleParle MoiPROJETS RÉALISÉSToutes mes projetsRésumé de tous les domainesInstitutions Financière3Banque Santander TottaContenu RestreintBanque Santander BrésilContenu RestreintBanque Safra S.AContenu RestreintWeb3 / Blockchain15Bitcoin (BTC)Contenu RestreintEthereum VM (ETH)Contenu RestreintRipple (XRP)Contenu RestreintHyperledger.orgContenu RestreintInternet ComputerContenu RestreintStarknet (Cairo)Contenu RestreintPolkadot (DOT)Contenu RestreintDeFi DashboardsContenu RestreintToken MarketplacesContenu RestreintCrypto CheckoutsContenu RestreintCold / Hot WalletsContenu RestreintWallet ConnectorsContenu RestreintNon Fungible Tokens (NFT)Contenu RestreintDescentralized Identities (DID)Contenu RestreintDescentralized Organizations (DAO)Contenu RestreintAnciens Projets29TIM | Réponse Vocale InteractiveAdobe Flex, Actionscript 3, Java, SpringACS | Follow EnergyAngularjs, HTML5, CSS3, C#, REST APIACS | Gateway CE50Angularjs, HTML5, CSS3, C, C#, LUASKY | Selinho de NatalActionscript 3, .NET, REST API, JSONIntel | Futuro de PresenteActionscript 3, .NET, REST API, JSONNestlé | Baú de DiversõesAS 3, .NET, REST, Facebook OpengraphMarlboro | Red RacingAdobe Flash, Actionscript 3, JSONHP | Cartucho PirataAdobe Flash, Actionscript 3, REST APIHP | Youtube StoreAdobe Flash, AS3, YouTube Data APICasas Bahia | BahianinhoActionscript 3, .NET, REST API, JSONAdria | TortinhasAdobe Flash, Actionscript 3, PHPUniverso Online | UOL FinanceActionscript 3, REST API, JSONUniverso Online | UOL MaisActionscript 3, REST API, JSONChevrolet | CaptivaActionscript 3, PHP, MYSQLGafisa | Edifício ColaborativoAdobe Flash, Actionscript 3Pão de Açucar | Sommeliers ClubAdobe Flash, Actionscript 3Pão de Açucar | Desafio ColeçõesAdobe Flash, Actionscript 3Antarctica | Circuito OriginalMacromedia Flash, Actionscript 2, XMLNestlé | Nescau 2.0Macromedia Flash, Actionscript 2, XMLSchin RefrigerantesActionscript 2, FMS 2, PHP, MYSQLMercedes-Benz | SLK 2005Actionscript 2, XMLMercedes-Benz | Classe CActionscript 2, XMLMercedes-Benz | Classe AActionscript 2, XMLMercedes Benz | SprinterActionscript 2, XMLMercedes Benz | Motores EletrônicosActionscript 2, XMLBanda NX ZeroMacromedia Flash, Actionscript 2Lew´lara TBWAActionscript 2, PHP, MYSQLMaison CriolaActionscript 2, PHP, MYSQLBondage MusicActionscript 2, PHP, MYSQLBlog PostsHackerRank5Sock MerchantWarm-Up ChallengesCounting ValleysWarm-Up ChallengesRepeated StringWarm-Up ChallengesJumping On CloudsWarm-Up ChallengesLeft RotationWarm-Up ChallengesLegal TermsTerms and ConditionsPolitique de ConfidentialitéClause de Non-Responsabilité
Utilisateur / PasseBlockchainMot de passe oublié?AccéderPas d'utilisateur? Regarder une démonstration
🚀 Avril 25, 2018♻ Mai 21, 2018reading 9 minutes de lecture

Warm-up Challenges ⚡ Counting Valleys

Je publie mes solutions aux défis HackerRank afin d'améliorer mon apprentissage, de renforcer mes connaissances et d'établir une compréhension des concepts abordés. Si j'aide quelqu'un en partageant en cours de route, c'est encore mieux!

Counting Valleys est l'un des défis initiaux avec une difficulté 'EASY'.


Quel est le défi?

Gary est un passionné d'escalade. Il suit méticuleusement vos promenades, en accordant une attention particulière aux petits détails comme la topographie. Lors de sa dernière promenade, il a fait exactement n pas. Pour chaque pas qu'il a fait, il a noté si c'était un pas vers le haut, U, ou un pas vers le bas, D. Les randonnées de Gary commencent et se terminent au niveau de la mer et chaque pas vers le haut ou vers le bas représente un changement d'altitude d'une unité. On définit les termes suivants :

  • Une montagne est une séquence d'étapes consécutives au-dessus du niveau de la mer, commençant par une élévation du niveau de la mer et se terminant par une étape au niveau de la mer.
  • Une vallée est une séquence d'étapes consécutives sous le niveau de la mer, commençant par une étape sous le niveau de la mer et se terminant par une étape vers le niveau de la mer.

Étant donné la séquence de montée et de descente des marches de Gary lors de sa dernière marche, trouve et écris le nombre de vallées qu'il a parcourues. Par exemple, si le chemin de Gary est s = [DDUUUUDD], il entrera d'abord dans une vallée de 2 unités de profondeur. Puis il escalade une montagne haute de 2 unités. Enfin, il revient au niveau de la mer et termine sa promenade.

Que devons-nous faire?

Une fonction qui devrait retourner un entier avec le nombre de vallées parcourues par Gary.

Paramètres
  • n = le nombre de pas parcourus par Gary
  • s = une string décrivant votre chemin

Sample Input

8
UDDDUDUU

Sample Output

1

Solution

function countingValleys(n, s) {

	let level = 0,
		valleys = 0,
		i = 0;
				
	for (i in s) {
		s.charAt(i) === 'U' ? level++ : level--;
		level === 0 && s.charAt(i) === 'U' ? valleys++ : 0;
	}

	return valleys;
}

Logique

let level = 0,
		valleys = 0,
		i = 0;

J'ai d'abord créé trois variables; level pour suivre l'altitude ; valleys pour compter le nombre de vallées traversées par Gary; i pour itérer lo forloop;

for in

J'ai créé une loop for qui suivra la séquence d'étapes suivie par Gary. for (i in s) {

La condition ternaire if vérifie si le pas de Gary était supérieur U: s.charAt(i) === 'U' ? Si était, incrémente le compte : level++ Sinon, décrémenter le compte. level--

Je vérifie ensuite que Gary est au niveau de la mer level === 0 et que le pas était en haut && s.charAt(i) === 'U', dans ce écrin représentant qu'il vient de gravir une vallée. valleys++

Comme au début du défi on nous informe que Gary commence et termine ses balades au niveau de la mer, on peut ignorer s'il a escaladé une montagne et se concentrer uniquement sur la vallée 😎.

Enfin, je finalise la fonction en retournant le décompte final. 🖖


🕵Solutions Supplémentaires

Autres langues que je parle


💎 Ruby

def countingValleys(n, s)
	level = 0
	valleys = 0

	s.each { | i | 
		i == 'U' ? level += 1 : level -= 1
		level == 0 && i == 'U' ? valleys += 1 : 0
	}

	valleys  
end

🐍 PYTHON 2 & 3

def countingValleys(n, s):
	level = 0
	valleys = 0
	
	for i in range(n):
		if (s[i] == 'U'):
			level += 1
		else:
			level -= 1

		if (level == 0 and s[i] == 'U'):
			valleys += 1
		
	return valleys

golang GOLANG

func countingValleys(n int32, s string) int32 {
	var level, valleys int32
	for _, i := range s {
		if i == 'U' {
			level++
		} else {
			level--
		}
		if level == 0 && i == 'U' {
			valleys++
		}
	}
	return valleys
}

scala SCALA

def countingValleys(n: Int, s: String): Int = {
	var level = 0
	var valleys = 0
					
	s.foreach (el =>  {
		if (el == 'U') {
			level += 1
		} else {
			level -= 1
		}
		if (level == 0 && el == 'U') {
			valleys += 1
		}
	})

	return valleys;
}

javaJAVA 7 & 8

static int countingValleys(int n, String s) {
	int level = 0,
			valleys = 0;
					
	for (int i = 0; i < n; i++) {
		if (s.charAt(i) == 'U')
			level++;
		else 
			level--;
		
		if (level == 0 && s.charAt(i) == 'U')
			valleys++;
	}

	return valleys;
}

php PHP

function countingValleys($n, $s) {
	$level = 0;
	$count = 0;

	for ($i = 0; $i < $n; $i++) {
		$s[$i] == 'U' ? $level++ : $level--;
		$level == 0 && $s[$i] == 'U' ? $valleys++ : 0;
	}
	return $valleys;
}

Pensée: Celui qui plante des arbres, sachant qu'il ne s’assiéra jamais à leur ombre, a tout au moins commencé à comprendre le sens de la vie!
Rabindranath Tagore

💡 Latest Insights:

Je ne prétends pas que ces réponses soient les meilleures ou les plus efficaces, ce sont simplement des créations de mon intuition pour résoudre le problème à ce moment-là. Aujourd'hui, je ferais sans doute différemment...
Sur MoiRésumé ProfessionnelMéthodologie de travailMémoires PersonnellesCurriculum VitaePhotos et Voyages
DOMAINES DE PRATIQUECTO as a ServiceCorporate ArchitectureSoftware & TechnologyFrontend DevelopmentBackend DevelopmentStrategy & ConsultingPlatform & DevSecOpsCustomer ExperienceAgile Culture
Centre d'InnovationDistributed LT & BlockchainData Science & AnalyticsCybersecurity PlatformIntelligent AutomationAI & Machine Learning
COURS & FORMATIONBlockchain & Distributed LTCybersecurity PlatformIntelligent AutomationFrontend DevelopmentBackend DevelopmentPlatform & DevSecOpsAI & Machine LearningProgressive Web AppsAgile Culture
Hackathons et Prix
PROJETS RÉALISÉSWEB3 / BLOCKCHAIN 2017 ~ 2024BitcoinEthereumRippleStarknetDIDInternet ComputerMarketplacesNFTHyperledgerWalletsDAODeFi DashboardsCrypto Checkoutsecurity tokensBANQUES 2016 ~ 2021Santander TottaSafra S.A.Santander BrésilAnciens Projets 2000 ~ 2016SKYIntelACSNinho SoleilHP YouStoreHP Cartucho PirataMarlboro RacingMercedes BenzTortinhas AdriaChevrolet CaptivaGPA Sommeliers ClubUOL FinanceGafisaSprinterCasas BahiaJVCLew´laraPão de AçucarSchin RefrigerantesNescau 2.0PapaizTV CulturaSpacekidsBondage MusicMaison CriolaAntarctica OriginalNX ZeroSLK 2005Classe AClasse CPetrobrasBraskemNíveaJohnson & JohnsonAbyaraTIM (URA)NestléUOL
Blog PostsHACKERRANK 2017 ~ 2018#sockMerchant#countingValleys#repeatedstring#jumpingOnClouds#leftRotation
Parle Moi
Clause de Non-ResponsabilitéPolitique de ConfidentialitéTerms and Conditions
Cette PWA a été créée avec ❤ pendant mon temps libre 🤸‍♂️ via des années...